首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OCG从PDF中提取几何元素(分层)

OCG从PDF中提取几何元素(分层)
EN

Stack Overflow用户
提问于 2018-08-23 20:04:18
回答 3查看 2K关注 0票数 1

所以我在这个问题上花了一个多月的时间。我正在寻找一种提取几何元素的方法(多边形、文本、圆弧等)。从一个矢量化PDF由文件的OCG(可选内容组)组织,这基本上是PDF层。使用PDFminer,我能够提取几何学(LTCurves、LTTextBoxes、LTLines等);使用PyPDF2可以查看PDF中有多少OCG,尽管我无法访问与OCG相关的几何图形。我在网上看到和尝试过的一些恶意脚本可能能够解决这个问题,但没有效果。我甚至求助于在文本编辑器中打开原始的PDF数据,并半信半疑地删除其中的部分,看看我是否能够想出一些自定义的解析技术来完成这个任务,但同样没有效果。Adobe的PDF手册充其量是最低限度的,所以当我试图创建解析器时,这是没有帮助的。有没有人知道解决这个问题的办法。

在这一点上,我对任何语言的解决方案都是开放的,使用任何操作系统(虽然我更喜欢在Windows或Linux上使用Python 3的解决方案),只要它是开放源码/免费的。

这里有人能帮我结束这个黑暗的兔子洞吗?非常感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-24 22:08:21

PDF文档包含两种“类型”的数据。文档中有一个面向对象的“结构”来将其划分为页面,并携带元数据(例如,有这个可选内容组列表),还有一个面向流的标记操作符列表,这些操作符实际上将内容“绘制”到页面上。

事实上,有OCG的,他们的名字,以及关于他们的一点存储在面向对象的内容上,并且可以很容易地通过解析对象内容来提取。但是OCG的成员没有存储在对象结构中。只有通过解析内容流才能找到它。一组标记操作员是特定OCG组的成员,当它被内容运算符/OC /optionacontentgroupname BDC预先执行,然后是操作员EMC。

解析内容流是一项不那么简单的任务。有很多工具可以帮你做到这一点。我自己也不会试图从头开始构建这样一个解析器。重写方向盘没有什么价值。

PDF的完整语法可从许多来源获得。在网上搜索"PDF规范1.7“或"ISO32000-1:2008”。这是一个令人生畏的文档,但它提供了创建和对象以及内容解析器所需的所有信息。

票数 5
EN

Stack Overflow用户

发布于 2019-08-26 10:18:45

如果您的PDF是组织在OGC层,那么您可以使用GDALGDAL命令。

使用以下命令检查PDF文件中的所有可用OGC层:

代码语言:javascript
运行
复制
gdalinfo "sample.pdf" -mdd LAYERS

然后,使用以下命令提取分区层:

代码语言:javascript
运行
复制
gdal_translate "sample.pdf" -of PNG sample.png --config GDAL_PDF_LAYERS "your_specific_layer_name"

更多的细节提到了这里

票数 1
EN

Stack Overflow用户

发布于 2021-07-17 02:38:42

嘿,@pythonic_programmer,我可以使用这个python库pdflayers来禁用默认视图(可见/不可见)到新的pdf文件中。https://pypi.org/project/pdflayers/

这意味着禁用pdf文件中层的默认状态:https://helpx.adobe.com/acrobat/using/pdf-layers.html

任何一层不可见,这意味着该层将不会呈现到pdf文档时,您处理(默认)。

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

https://stackoverflow.com/questions/51993507

复制
相关文章

相似问题

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