我试图循环通过一个pdf报告,并获取简单的"Param :=值“语句。基本上,这些报告是用MathCad编写的测试报告,它们使用这个:=赋值操作符。到目前为止,我已经能够使用PDFminer将param和value连同其他所有内容转储到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对。
current:\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\n KVG\n nMVAG\n‘b’发电机Grounding\n'b'Ratio:\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")目标是自动解析这些报告,并让它更新我们的设置数据库。我使用Anaconda3和Python3.8与Pycharm 2021
发布于 2021-09-01 18:54:25
如果序列\xef\x80\xba\xef\x80\xbd看起来是Unicode编码点的UTF-8编码,那么您看到的是来自Unicode专用区域的两个字符。在PDF文档中使用PUA字符代码是非常常见的;文档可能还包括带有这些字符代码的特定呈现方式的嵌入式字体。仔细检查呈现的PDF,您可能会看到:=符号与文档中:和=的其他用途之间的区别。
PDF不是用来存储信息的机制。它是一种技术,目的是有效地存储文档的呈现图像,以便在不影响其外观的情况下将其打印或显示在各种媒体上。保持原始文档的语义从来不是设计目标,试图提取原始信息的工具都有其局限性。
尽管如此,如果我的第一段中的分析是正确的,您可能可以通过搜索序列"\uf03a\uf03d"来解析PDF文本,这似乎是正在使用的一对Unicode字符。
https://stackoverflow.com/questions/69018534
复制相似问题