Как эффективно извлечь текст из каталога PDF-файлов с помощью OCR?Python

Программы на Python
Ответить
Anonymous
 Как эффективно извлечь текст из каталога PDF-файлов с помощью OCR?

Сообщение Anonymous »

У меня большой каталог с PDF-файлами (изображения), как мне эффективно извлечь текст из всех файлов внутри каталога? На данный момент я пытался:

Код: Выделить всё

import multiprocessing
import textract

def extract_txt(file_path):
text = textract.process(file_path, method='tesseract')

p = multiprocessing.Pool(2)
file_path = ['/Users/user/Desktop/sample.pdf']
list(p.map(extract_txt, file_path))
Однако это не работает... это занимает много времени (у меня есть документы на 600 страниц). Дополнительно: а) Я не знаю, как эффективно обрабатывать часть преобразования каталога. б) Я хотел бы добавить разделитель страниц, скажем: ... содержимое страницы ... , но понятия не имею, как это сделать.

Таким образом, как я могу применить функцию extract_txt ко всем элементам каталога, которые заканчиваются на .pdf, и вернуть те же файлы в другом каталоге, но в формате .txt формат и добавить разделитель страниц с извлечением текста OCR?

Кроме того, мне было интересно использовать документы Google для выполнения этой задачи. Можно ли программно использовать документы Google для решения вышеупомянутой проблемы с извлечением текста?

ОБНОВЛЕНИЕ

Что касается проблемы «добавления разделителя страниц» (

Код: Выделить всё

 ... page content ... 
) после прочтения ответа Роланда Смита я попытался:

Код: Выделить всё

from PyPDF2 import PdfFileWriter, PdfFileReader
import textract

def extract_text(pdf_file):
inputpdf = PdfFileReader(open(pdf_file, "rb"))
for i in range(inputpdf.numPages):
w = PdfFileWriter()
w.addPage(inputpdf.getPage(i))
outfname = 'page{:03d}.pdf'.format(i)
with open(outfname, 'wb') as outfile:  # I presume you need `wb`.
w.write(outfile)
print('\n\n')
text = textract.process(str(outfname), method='tesseract')
os.remove(outfname)  # clean up.
print(str(text, 'utf8'))
print('\n\n')

extract_text('/Users/user/Downloads/ImageOnly.pdf')
Однако у меня все еще есть проблемы с частью print(), поскольку вместо печати было бы полезнее сохранять в файл весь вывод. Таким образом, я попытался перенаправить вывод в файл:

Код: Выделить всё

sys.stdout=open("test.txt","w")
print('\n\n')
sys.stdout.close()
text = textract.process(str(outfname), method='tesseract')
os.remove(outfname)  # clean up.
sys.stdout=open("test.txt","w")
print(str(text, 'utf8'))
sys.stdout.close()
sys.stdout=open("test.txt","w")
print('\n\n')
sys.stdout.close()
Есть идеи, как реализовать трюк с извлечением/разделителем страниц и сохранить все в файл?...

Подробнее здесь: https://stackoverflow.com/questions/436 ... y-with-ocr
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»