首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解析python中的PDF形状数据

解析python中的PDF形状数据
EN

Stack Overflow用户
提问于 2022-02-02 08:23:44
回答 1查看 485关注 0票数 2

我试图把一个脚本,以修复PDF大量的PDF已经从Autocad通过他们的DWG2PDF打印驱动程序导出。

当使用此驱动程序时,所有SHX字体都被呈现为形状数据,而不是文本数据,但是,它们确实有一个注释插入到PDF中,在预期的位置使用预期的文本。

到目前为止,在我的脚本中,我已经让它在PDF中运行,并在每个部分的顶部插入隐藏的文本,文本压缩到评论的大小,这给了我90%的方法,给了我一个可搜索的文档。

遗憾的是,注释区域的大小是相对的(基于整数的),这使得很难准确地确定短文本的方向,导致文本周围大小不均匀的框。

我想要做的是解析PDF中的形状数据,在注释范围内收集任何信息,然后确定一个更小、更精确的边框。然而,我所能找到的所有信息都是那些试图通过文本数据进行解析的人,而我在形状数据方面根本找不到任何东西。

下面的图像是PDF中原始文本的示例,第二个图像以蓝色显示注释边框,红色文本是我设置的隐藏内容,以使文档可搜索,并可复制/粘贴。我可以通过将框缩小一个固定的边距来得到更好的效果,但是对于小的文本项,注释框的低分辨率坐标数据会把事情搞砸。

为了达到这一目的,我使用了PyPDF2和reportlab的组合,但是可以迁移到不同的库中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-03 07:44:17

最后,我没有用PyPDF2找到解决方案,我找到了一种在pdfminer.six中迭代形状数据的简单方法,但是在pdfminer中找不到一种提取注释数据的好方法。

因此,我使用一个库获取注释,一个用于查看形状数据,最后使用第三个库在新的pdf上添加隐藏文本。随着工作表复杂性的增加,它运行得非常慢,但是给我足够好的结果,请参见下面的图像,其中注释中的粗绿色边框缩小到文本周围的蓝色边框。当然,我不会划定边界,使用不可见的文本作为实际的程序输出,给出相当好的可选择/可搜索的文本。

如果有人对PDF中的形状数据循环感兴趣,那么下面的片段应该可以帮助您开始工作。

代码语言:javascript
运行
复制
from pdfminer.high_level import extract_pages
from pdfminer.layout import LTLine, LTCurve

for page_layout in extract_pages("TestSchem.pdf"):
    for element in page_layout:
        if isinstance(element, LTCurve) or isinstance(element, LTLine):
            print(element.bbox)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70952416

复制
相关文章

相似问题

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