#python #loops #pdf #glob #python-tesseract
Вопрос:
Я пытаюсь перебрать каталог PDF-файлов. Сначала я конвертирую все PDF-файлы в jpeg и, наконец, в txt. Я смог перебрать каталог PDF-файлов и записать каждый файл jpeg в один txt-файл, но что мне действительно нужно, так это отдельный txt-файл для каждого PDF-файла. Я понимаю проблему, связанную с тем, что каждая страница pdf преобразуется в формат JPEG, а затем записывается в текстовый файл. Если есть 2 PDF-файла, мне бы хотелось 2 файла txt. Ниже приведен мой код до сих пор. Спасибо за вашу помощь. из файла импорта изображения
import pytesseract
import sys
from pdf2image import convert_from_path
import os
import cv2
import glob
for filepath in glob.iglob("path/*.pdf"):
PDF_file = filepath
pages = convert_from_path(PDF_file, 500)
image_counter = 1
for page in pages:
filename = "page_" str(image_counter) ".jpg"
page.save(filename, 'JPEG')
image_counter = image_counter 1
filelimit = image_counter-1
outfile = "out_text.txt"
f = open(outfile, "a")
for i in range(1, filelimit 1):
filename = "page_" str(i) ".jpg"
text = str(((pytesseract.image_to_string(Image.open(filename)))))
text = text.replace('-n', '')
f.write(text)
f.close()
Ответ №1:
Если вы хотите, чтобы выводился в отдельных текстовых файлах для разных страниц PDF-файлов. Затем вы должны открыть файлы под разными именами для каждой страницы pdf. Подобный этому:
for i in range(1, filelimit 1):
outfile = "out_text_" str(i) ".txt"
f = open(outfile, "a")
filename = "page_" str(i) ".jpg"
text = str(((pytesseract.image_to_string(Image.open(filename)))))
text = text.replace('-n', '')
f.write(text)
f.close()
Комментарии:
1. Спасибо. Это близко к тому, чего я хочу, но не совсем. Я не хочу, чтобы каждая страница была записана в текст, но, например, если у меня есть два PDF-файла, мне бы хотелось два файла txt. Я понимаю, что это может быть сложно, потому что каждая страница PDF фактически разделяется на файлы в формате JPEG.