gpt4 book ai didi

python - 在python中解析PDF形状数据

转载 作者:行者123 更新时间:2023-12-03 08:10:38 28 4
gpt4 key购买 nike

我正在尝试编写一个脚本来修复 PDF,这些 PDF 是通过 Autocad 的 DWG2PDF 打印驱动程序导出的大量 PDF。

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

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

不幸的是,评论区域的大小相对较粗(基于整数),这使得很难准确确定短文本的方向,并导致文本周围的框大小不均匀。

我希望能够解析 PDF 中的形状数据,收集注释范围内的所有内容,然后确定一个更小、更准确的边界框。然而,我能找到的所有信息都是人们试图解析文本数据,而我在形状数据方面根本找不到任何东西。

下图是 PDF 中原始文本的示例,第二张图显示了蓝色的注释边界框,红色文本是我设置为隐藏的内容,以使文档可搜索,并可复制/粘贴。通过将框缩小固定的边距,我可以让事情变得更好一些,但是对于小文本项目,注释框坐标数据的低分辨率会使事情变得困惑。

Progress Image

为了实现这一目标,我使用了 PyPDF2 和 reportlab 的组合,但我愿意迁移到不同的库。

最佳答案

我最终没有找到 PyPDF2 的解决方案,我能够找到一种简单的方法来迭代 pdfminer.6 中的形状数据,但随后无法在 pdfminer 中找到提取注释数据的好方法。

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

example of output

如果有人对循环 PDF 中的形状数据感兴趣,下面的代码片段应该可以帮助您入门。

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)

关于python - 在python中解析PDF形状数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70952416/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com