我正在读取一个pdf文件,并将每个页面转换为图像并保存,接下来我需要在每个图像上运行OCR,并识别每个图像文本并将其写入新的文本文件。
我知道如何从所有图像中获取所有文本,并将其转储到一个文本文件中。
pdf_dir = 'dir path'
os.chdir(pdf_dir)
for pdf_file in os.listdir(pdf_dir):
if pdf_file.endswith(".pdf"):
pages = convert_from_path(pdf_file, 300)
pdf_file = pdf_file[:-4]
for page in pages:
page.save("%s-page%d.jpg" % (pdf_file,pages.index(page)), "JPEG")
img_dir = 'dir path'
os.chdir(img_dir)
docs = []
for img_file in os.listdir(img_dir):
if img_file.endswith(".jpg"):
texts = str(((pytesseract.image_to_string(Image.open(img_file)))))
text = texts.replace('-\n', '')
print(texts)
img_file = img_file[:-4]
for text in texts:
file = img_file + ".txt"
# create the new file with "w+" as open it
with open(file, "w+") as f:
for texts in docs:
# write each element in my_list to file
f.write("%s" % str(texts))
print(file)
我需要一个文本文件,以写入对应的每个图像,已识别该图像内的文本。目前正在写入的文件都是空的,我不知道出了什么问题。有人能帮帮忙吗?
发布于 2019-06-19 05:22:00
这里有很多东西需要解包:
因此,每个文本文件都只是被创建(为空),并且代码永远不会赋值text = texts.replace('-\n', '')
,但是您不会对它做任何事情,而是在该循环中迭代for text in texts
,因此在该循环中,text
不是replace
的结果,而是来自iterable
texts
的一个项目是< docs
>d14replace>,每个text in texts
都是一个character.
texts
(也是先前分配的)作为docs
上的迭代器(同样,这是空的)。2和4不一定有问题,但可能不是好的实践。1似乎是产生空文本文件的罪魁祸首。3似乎也是一个逻辑错误,因为您几乎肯定不想将单个字符写到文件中。
所以我认为这就是你想要的,但它没有经过测试:
for img_file in os.listdir(img_dir):
if img_file.endswith(".jpg"):
texts = str(((pytesseract.image_to_string(Image.open(img_file)))))
print(texts)
file = img_file[:-4] + ".txt"
#create the new file with "w+" as open it
with open(file, "w+") as f:
f.write(texts)
print(file)
https://stackoverflow.com/questions/56655133
复制相似问题