【发布时间】:2021-10-31 05:42:11
【问题描述】:
我正在尝试遍历 pdf 报告并获取简单的“Param := Value”语句。基本上,这些报告是用 MathCad 编写的测试报告,它们使用这个 := 赋值运算符。到目前为止,我已经能够使用 PDFminer 将参数和值以及其他所有内容转储到 txt 文件中,但所有符号都更改为 或 U 符号。我需要它才能读取 := 并将其用作我的定位器,这样我就可以解析所有设置。
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfparser import PDFParser
from pdfminer.high_level import extract_pages
from pdfminer.layout import LTTextContainer
with open('output.txt', 'a') as file:
for page_layout in extract_pages("report.pdf"):
for element in page_layout:
if isinstance(element, LTTextContainer):
file.write(str(element.get_text().encode("unicode-8")))
print(element.get_text().encode("unicode-8"))
我也尝试过使用下面第二个这样的 process_page 路由,这给了我一个如下所示的输出,它应该是一组 key:=value 对。
发电机满负荷 当前:\n'b'ZGBASE\n'b'\xef\x80\xba\xef\x80\xbd\n'b'ZGBASE\n'b'\xef\x80\xbd\n'b'1.191 \xce\xa9\n'b'IGen\n'b'\xef\x80\xbd\n'b'7758.14 A\n'b'IGen\n'b'\xef\x80\xba\xef\x80\xbd\n'b'MVAG\n'b'3 KVG\n'b'2\nKVG\nMVAG\n'b'生成器 接地\n'b'比:\n'b'GTR\n'b'\xef\x80\xba\xef\x80\xbd\n'b'14400V
output_string = StringIO()
with open('CHrpt.pdf', 'r') as in_file:
parser = PDFParser(in_file)
doc = PDFDocument(parser)
rsrcmgr = PDFResourceManager()
device = TextConverter(rsrcmgr, output_string, laparams=LAParams())
interpreter = PDFPageInterpreter(rsrcmgr, device)
for page in PDFPage.create_pages(doc):
interpreter.process_page(page)
with open('hello.txt', 'a') as file:
file.write(str(output_string.getvalue()), encoding="utf-8")
我们的目标是自动解析这些报告并让它更新我们的设置数据库。我在 Pycharm 2021 中使用 Anaconda3 和 Python 3.8
【问题讨论】:
标签: python parsing encoding character-encoding pdfminer