2 функции, которые я использую через Python (2-й нуждается в tesseract). Я предпочитаю тессеракт вместо pdfminer, но они фактически делают то же самое. Не уверен, что не так с вашим кодом, но я считаю, что это альтернативные эквиваленты.
from PIL import Image
import pytesseract
import cv2
import os
import subprocess
from pdfminer.converter import TextConverter
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfpage import PDFPage
#converts pdf, returns its text content as a string
def convert(fname, pages=None):
if not pages:
pagenums = set()
else:
pagenums = set(pages)
output = StringIO()
manager = PDFResourceManager()
converter = TextConverter(manager, output, laparams=LAParams())
interpreter = PDFPageInterpreter(manager, converter)
infile = open(fname, 'rb')
for page in PDFPage.get_pages(infile, pagenums):
interpreter.process_page(page)
infile.close()
converter.close()
text = output.getvalue()
output.close
return text
def to_txt(pdf_path, output_dir, name=None):
if not os.path.exists(output_dir):
os.makedirs(output_dir)
if name == None:
parts = pdf_path.split('\\')
fname = parts[-1][:-4] + '.txt'
fname = fname.replace(" ", "_")
end = output_dir + fname
else:
if name[-4:] != '.txt':
name += '.txt'
end = output_dir + name
cmd = ['pdftotext', pdf_path,
end]
subprocess.call(cmd)
print('Converted')