首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法解析PDF编码符号

无法解析PDF编码符号
EN

Stack Overflow用户
提问于 2021-09-01 17:52:21
回答 1查看 85关注 0票数 1

我试图循环通过一个pdf报告,并获取简单的"Param :=值“语句。基本上,这些报告是用MathCad编写的测试报告,它们使用这个:=赋值操作符。到目前为止,我已经能够使用PDFminer将param和value连同其他所有内容转储到txt文件中,但是所有的符号都被更改为或U符号。我需要它能够读取:=,并使用它作为我的定位器,这样我就可以解析所有的设置。

代码语言:javascript
复制
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

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2021-09-01 18:54:25

如果序列\xef\x80\xba\xef\x80\xbd看起来是Unicode编码点的UTF-8编码,那么您看到的是来自Unicode专用区域的两个字符。在PDF文档中使用PUA字符代码是非常常见的;文档可能还包括带有这些字符代码的特定呈现方式的嵌入式字体。仔细检查呈现的PDF,您可能会看到:=符号与文档中:=的其他用途之间的区别。

PDF不是用来存储信息的机制。它是一种技术,目的是有效地存储文档的呈现图像,以便在不影响其外观的情况下将其打印或显示在各种媒体上。保持原始文档的语义从来不是设计目标,试图提取原始信息的工具都有其局限性。

尽管如此,如果我的第一段中的分析是正确的,您可能可以通过搜索序列"\uf03a\uf03d"来解析PDF文本,这似乎是正在使用的一对Unicode字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69018534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档