使用 python 从 pdf 文件生成 .txt 文件,保持名称与 pdf 中的名称相同
Generate .txt files from pdf files keeping the name same as in pdf using python
我有一个包含 pdf 文件的目录。当您将文件名传递给 wand.image class 的对象时,我已经编写了执行 OCR 的代码。我现在想做的是遍历 pdf 文件的目录并为每个 pdf 生成一个 OCR'd txt 文件并将其保存在某个目录中。目前我写的代码如下:
import io
from PIL import Image
import pytesseract
from wand.image import Image as wi
pdf = wi(filename = r"D:\files\aba7d525-04b8-4474-a40d-e94f9656ed42.pdf", resolution = 300)
pdfImg = pdf.convert('jpeg')
imgBlobs = []
for img in pdfImg.sequence:
page = wi(image = img)
imgBlobs.append(page.make_blob('jpeg'))
extracted_text = []
for imgBlob in imgBlobs:
im = Image.open(io.BytesIO(imgBlob))
text = pytesseract.image_to_string(im, lang = 'eng')
extracted_text.append(text)
print(extracted_text[0])
问题是,如果你看到我的代码,("pdf = .."),我在我的代码中硬编码了一个文件名,但我需要在那里传递一个目录,以便该目录中的所有文件都可以是 OCR' d 并且我还需要将所有这些文件的文件名作为输出,只是将 .pdf 替换为 .txt。我该怎么做
你可以使用 glob
示例:
import os
import glob
from wand.image import Image as wi
files = glob.glob("D:\files\*")
for file in files:
pdf = wi(filename = file, resolution = 300)
# write your code
with open("D:\extracted_files\" + os.path.split(file)[-1].split(".")[0] + ".txt", 'w') as f:
f.write(extracted_text)
我有一个包含 pdf 文件的目录。当您将文件名传递给 wand.image class 的对象时,我已经编写了执行 OCR 的代码。我现在想做的是遍历 pdf 文件的目录并为每个 pdf 生成一个 OCR'd txt 文件并将其保存在某个目录中。目前我写的代码如下:
import io
from PIL import Image
import pytesseract
from wand.image import Image as wi
pdf = wi(filename = r"D:\files\aba7d525-04b8-4474-a40d-e94f9656ed42.pdf", resolution = 300)
pdfImg = pdf.convert('jpeg')
imgBlobs = []
for img in pdfImg.sequence:
page = wi(image = img)
imgBlobs.append(page.make_blob('jpeg'))
extracted_text = []
for imgBlob in imgBlobs:
im = Image.open(io.BytesIO(imgBlob))
text = pytesseract.image_to_string(im, lang = 'eng')
extracted_text.append(text)
print(extracted_text[0])
问题是,如果你看到我的代码,("pdf = .."),我在我的代码中硬编码了一个文件名,但我需要在那里传递一个目录,以便该目录中的所有文件都可以是 OCR' d 并且我还需要将所有这些文件的文件名作为输出,只是将 .pdf 替换为 .txt。我该怎么做
你可以使用 glob
示例:
import os
import glob
from wand.image import Image as wi
files = glob.glob("D:\files\*")
for file in files:
pdf = wi(filename = file, resolution = 300)
# write your code
with open("D:\extracted_files\" + os.path.split(file)[-1].split(".")[0] + ".txt", 'w') as f:
f.write(extracted_text)