Я нашел и (слегка) изменил этот скрипт в stackoverflow, чтобы он работал на python 3.3:
from pdfminer.pdfinterp import PDFResourceManager, process_pdf
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from io import StringIO
def convert_pdf(path):
rsrcmgr = PDFResourceManager()
retstr = StringIO()
codec = 'utf-8'
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, laparams=laparams)
fp = open(path, 'rb')
process_pdf(rsrcmgr, device, fp)
fp.close()
device.close()
string = retstr.getvalue()
retstr.close()
return string
print(convert_pdf('abc.pdf'))
Он работает нормально, однако у меня, кажется, есть 2 проблемы:
При запуске скрипта я получаю кучу предупреждений:
ВНИМАНИЕ: root: undefined: PDFCIDFont: basefont='LKOELN+Wingdings-Regular', cidcoding='Adobe-Identity', 139
ПРЕДУПРЕЖДЕНИЕ:root:undefined: PDFCIDFont: basefont='LKKPCF+Wingdings2', cidcoding='Adobe -Идентичность», 132
Который в печатном тексте выглядит как (cid:139)
, как мне поймать это предупреждение и заменить этот текст чем-то другим?
Обратите внимание, что у меня есть строка кодека, которая в исходном скрипте идет внутри
TextConverter(rsrcmgr, retstr, laparams=laparams)
, однако я получаю:Трассировка (последний последний вызов): Файл "C:/Users/rodrigo/Desktop/csp_pdf/csp_pdf2.py", строка 46, в convert_pdf('abc.pdf') Файл "C:/Users/rodrigo/Desktop/csp_pdf /csp_pdf2.py", строка 33, в convert_pdf device = TextConverter(rsrcmgr, retstr, codec = 'utf-8', laparams=laparams) TypeError: init() получил неожиданный ключевой аргумент 'codec '
Это связано с первой проблемой?
Спасибо!