Генерируйте файлы .txt из файлов pdf, сохраняя имя, как в pdf, используя python - PullRequest
0 голосов
/ 31 мая 2019

У меня есть каталог, содержащий файлы PDF. Я написал код, который выполняет OCR, когда вы передаете имя файла объекту класса wand.image. В настоящее время я хочу сделать цикл по каталогу файлов PDF и сгенерировать текстовый файл OCR для каждого файла PDF и сохранить его в некотором каталоге. Код, который я написал до сих пор, выглядит следующим образом:

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 а также мне нужно взять в качестве выходных данных все эти файлы с именами файлов, просто заменив .pdf на .txt. Как я могу это сделать

1 Ответ

0 голосов
/ 31 мая 2019

Вы можете использовать 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)
...