Python: Итерация по каталогу и запись результатов в отдельные txt-файлы

#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.