pdfminer3k выводит другой текст для одного файла PDF
Я использую pdfminer3k(Python 3.6.1::Anaconda 4.4.0 (64-bit); система Windows 10) для извлечения текстового содержимого в моих файлах pdf. Код выглядит следующим образом:
from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams, LTTextBox, LTTextLine
def parse_pdf(path, output_path):
with open(path, 'rb') as fp:
parser = PDFParser(fp)
doc = PDFDocument()
parser.set_document(doc)
doc.set_parser(parser)
doc.initialize('')
rsrcmgr = PDFResourceManager()
laparams = LAParams()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
extracted_text = ''
for page in doc.get_pages():
interpreter.process_page(page)
layout = device.get_result()
for lt_obj in layout:
if isinstance(lt_obj, LTTextBox) or isinstance(lt_obj, LTTextLine):
extracted_text += lt_obj.get_text()
with open(output_path, "w", encoding="utf-8") as f:
f.write(extracted_text)
Когда я запускаю приведенный выше код в среде Python (В командной строке Windows, запустите команду python test.py
), Я получил правильный ответ, который извлекает содержимое моего файла test.pdf следующим образом:
宁波增值税电子普通发票
发票代码:
033021700111
发票号码:
69152813
开票日期:
2017 12 30
月
年
日
机器编号:
661565722666
校 验 码:
84280 03079 11374 32098
购
买
方
名 称:
宁波超顺电器有限公司
纳税人识别号:
91330283778211941K
地 址、电 话:
开户行及账号:
浙江省宁波市奉化区溪口镇永安路1号 0574-59558118
奉化农商银行溪口支行_201000049871887
密
码
区
3-*35<+>419+-552339714>*608
/130*5-*24<16<95+5+23>51038
/>-3<3*+7-3-+<97-515438>95+
*684>31009*434657794+5-4+40
货物或应税劳务、服务名称 规格型号 单位
数 量
单 价
金 额
税率 税 额
通讯服务费
1
1200.00
1200.00
*
合 计
价税合计(大写)
壹仟贰佰圆整
销
售
方
名 称:
中国移动通信集团浙江有限公司宁波分公司
纳税人识别号:
91330000717612522B
地 址、电 话:
开户行及账号:
浙江省宁波市国家高新技术开发区光华路2号 057455123456-8821
中国建设银行宁波市分行营业部_33101983679050502016
备
注
¥1200.00
¥1200.00
(小写)
云主机费用(2017.6-2018.5)
收款人:
潘昭杰
复核:
徐妍
开票人:
孙培芬
销售方:(章)
*
*
Однако после использования pyinstaller(команда: pyinstaller -F test.py
) упаковал код в исполняемую программу (test.exe
файл), я получил неправильный ответ:
91330283778211941K
2017 12 30
3-*35<+>419+-552339714>*608
/130*5-*24<16<95+5+23>51038
/>-3<3*+7-3-+<97-515438>95+
*684>31009*434657794+5-4+40
91330000717612522B
¥1200.00
¥1200.00
*
Я пробовал некоторые PDF-файлы, и я обнаружил, что только часть файлов неправильны, а другие - правы. но когда я тестирую эти PDF-файлы в среде Python, они все ПРАВЫ. Я запутался и не знаю, что с этим делать. Любой совет? Большое спасибо.