У меня есть этот файл в формате PDF. PDF-файл с низким разрешением на основе изображения. Я пытаюсь извлечь из него данные, и все варианты, которые я пробовал, не работают.
Вариант 1 — использование pdfminer
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io import StringIO
def convert_pdf_to_txt(path):
rsrcmgr = PDFResourceManager()
retstr = StringIO()
codec = 'utf-8'
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, laparams=laparams)
fp = open(path, 'rb')
interpreter = PDFPageInterpreter(rsrcmgr, device)
password = ""
maxpages = 0
caching = True
pagenos=set()
for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True):
interpreter.process_page(page)
text = retstr.getvalue()
fp.close()
device.close()
retstr.close()
return text
Вариант 2 — использование tika
from tika import parser # pip install tika
raw = parser.from_file(path)
text=raw['content']
# I don't like to use it very much because it often corrupts the file
Вариант 3 – использование pypdf
import PyPDF2
pdf_file = open(path, 'rb')
read_pdf = PyPDF2.PdfFileReader(pdf_file)
number_of_pages = read_pdf.getNumPages()
page = read_pdf.getPage(0)
page_content = page.extractText()
text=page_content.encode('utf-8')
Все варианты возвращают пустые результаты. Я предполагаю, что это может быть связано с качеством файла. Я знаю, что мы могли бы работать с изображениями и увеличивать их характеристики, чтобы упростить извлечение данных (увеличивать размер изображения, работать с пороговыми значениями и т. д., вы можете делать многое с помощью PIL). Есть ли эффективный способ сделать это с файлами PDF?