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, они все ПРАВЫ. Я запутался и не знаю, что с этим делать. Любой совет? Большое спасибо.

0 ответов

Другие вопросы по тегам