停止在渲染时解析 PDF

大多数前端 PDF 提取工具都失败了。

开发者试图从视觉输出中猜测文档结构。他们观察渲染后的像素来寻找列、表格或列表。他们利用计算机视觉或像素邻近度来决定一个框的起始位置。

这种构建方式是错误的。

PDF 的操作流(operator stream)中已经包含了明确的结构化数据。表格不仅仅是一组相邻的像素。它是通过特定的命令(如 moveTolineTorectangle)绘制出来的。你想要寻找的边界已经编码在源文件中了。

如果你的提取器在 100% 缩放和 150% 缩放时给出的列不同,那么你提取的就不是结构,而是在对视觉伪影进行模式匹配。

停止使用视觉启发式方法。开始解析操作流。

为什么操作流更好:

难走的路才是正确的路。

你必须理解 CTM 栈。你必须跟踪矩阵状态并对子路径(subpaths)进行分类。你必须阅读 PDF 规范和源代码才能掌握它。

这在前期需要投入更多精力。但它适用于用户上传的每一个 PDF。基于像素的工具只能对你测试套件中的少数文件有效。

构建一个真正的提取器,而不是一个演示 Demo。

来源:https://dev.to/bonzai2carn/stop-parsing-pdfs-at-render-time-a-better-architecture-for-structured-extraction-5fb8