Java环境下PDF表格提取时保留空列结构的可靠方案咨询
Java环境下PDF表格提取时保留空列结构的可靠方案咨询
我目前有25–30种不同结构的PDF文档,每种都包含结构各异的表格。我的最终目标是提取特定标题之间的表格数据,并通过Java将其转换为JSON格式(将每一列映射到特定字段)。
但我在使用Apache PDFBox时遇到了一个核心问题:如果表格的单元格/列是空的,PDF文本中没有任何空格或占位符,导致提取的文本会合并相邻列,彻底破坏表格结构。换句话说,PDFBox不会为空列插入任何间距,所以输出文本里的列布局完全丢失了。
我尝试过把原始PDF喂给ChatGPT,用零温度提示词,希望它能稳定地把表格解析成JSON,但每次结果都不一致。因为这种不确定性,我更倾向于基于文本的方案:先提取出结构一致的文本,再把文本喂给AI(或其他基于规则的逻辑)转换成JSON。但如果文本提取工具无法保留空列的结构,就几乎不可能可靠地映射列了。

上面是一个包含缺失列的行示例,它应该被处理成:
"TOPLAM missing_column missing_column missing_column 70,000,000.00 70,427,300.00 4.88"
理想的提取结果应该是以下两种格式之一:
"TOPLAM 70,000,000.00 70,427,300.00 4.88"
或者
TOPLAM | [empty] | [empty] | [empty] | 70,000,000.00 | 70,427,300.00 | 4.88
我的疑问如下:
- 是否可以配置Apache PDFBox,使其保留空列/单元格的间距或占位符,以维持表格结构?
- 有没有其他Java库或技术(比如Tabula、iText、OCR工具等)能更好地保留表格列结构,即使存在空列?是否需要依赖边界框坐标或者PDF转HTML的方法来保持布局一致性?
- 有没有人遇到过类似的“隐形”空列问题,你们是怎么解决的?我希望尽量避免手动编写针对单个PDF的自定义代码,因为我有很多种PDF变体。
如果上述方案都不可行,我是不是应该直接提取PDF的相关部分,然后喂给微调后的AI模型?
任何关于如何确保可靠提取表格、避免空列破坏布局的建议,我都非常感激。
备注:内容来源于stack exchange,提问作者Requiet
相关产品推荐
相关产品推荐

