Извлечь текст на страницу с помощью Python pdfMiner?
Я экспериментировал с pyPdf и pdfMiner для извлечения текста из файлов pdf. У меня есть несколько недружелюбных PDF-файлов, которые только pdfMiner может извлечь успешно. Я использую код здесь, чтобы извлечь текст для всего файла. Тем не менее, я действительно хотел бы извлечь текст на странице, например getPage(i).extractText()
функциональность в pyPdf. Кто-нибудь знает, как извлечь текст на страницу с помощью pdfMiner?
2 ответа
Решение
for pageNumber, page in enumerate(PDFDocument.get_pages()):
if pageNumber == 42:
#do something with the page
Здесь есть довольно хорошая статья.
Вот как вы пишете все страницы в отдельные файлы:
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.converter import XMLConverter, HTMLConverter, TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfparser import PDFParser
import io
import os
fp = open('Files/Company_list/0010/pdf_files/testfile3.pdf', 'rb')
rsrcmgr = PDFResourceManager()
retstr = io.StringIO()
print(type(retstr))
codec = 'utf-8'
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
page_no = 0
for pageNumber, page in enumerate(PDFPage.get_pages(fp)):
if pageNumber == page_no:
interpreter.process_page(page)
data = retstr.getvalue()
with open(os.path.join('Files/Company_list/0010/text_parsed/2017AR', f'pdf page {page_no}.txt'), 'wb') as file:
file.write(data.encode('utf-8'))
data = ''
retstr.truncate(0)
retstr.seek(0)
page_no += 1
Просто замените page_no на номер нужной вам страницы, если вам нужны конкретные номера страниц.