У меня есть каталог, содержащий файлы 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. Как мне это сделать
Вы можете использовать глобус
Пример:
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)
Кроме того, он просто создает один файл и перезаписывает его, а не сохраняет отдельные новые файлы .txt.
os.path.split(file) предоставит вам список каталогов и файлов, os.path.split(file)[-1] выберет имя файла, os.path.split(file)[-1].split ("".") разделит имя файла на точку (""."), os.path.split(file)[-1].split(".")[0] даст имя файла без расширения, os. path.split(file)[-1].split(".")[0] + ".txt" добавит имя файла pdf и расширение .txt
Спасибо, но как мне получить точные имена файлов в качестве вывода. Пример файла в каталоге выглядит так: «000dbf9d-d53f-465f-a7ce-722722136fb7465.pdf». Мне нужно вывести как «000dbf9d-d53f-465f-a7ce-722722136fb7465.txt», и это должно иметь место для всех файлов в каталоге. Я думаю, мне нужно разделить имена файлов, а затем присоединиться, может быть, есть идеи?