如何重构PDF/OCR提取时被拆分为多行的文本语句?
从PDF/OCR提取文本的行合并与语句边界问题
问题背景
从PDF、OCR等来源提取文本时,常会遇到文本被拆分为多行的问题。我曾尝试用PyMuPDF 1.22提取PDF文本,使用「block mode」时效果尚可,但我的问题是通用的,不局限于特定工具或格式。
若PDF由LaTeX(如arxiv文档)或通过pandoc(基于HTML)生成,提取时标题和段落会作为单个块,仅含易去除的\n。但如果PDF是从Word或OpenOffice导出,或是OCR识别的结果,每行都会成为独立块,得到如下文本:
The Big Heading A Sub-Heading? This is the first sentence and now it ends. And a second sent- ence begins and continues and ends. A short third.
这会得到6个块、6个字符串,但我需要3个段落字符串或5个语句字符串,即期望输出:
The Big Heading A Sub-Heading? This is the first sentence and now it ends. And a second sentence begins and continues and ends. A short third.
OCR领域中,行转语句的问题理应已有解决方案,但我未找到成熟库或方案。我还想了解是否存在语言无关的解决方案,或是需基于特定语言的启发式规则(我常处理非英文文本)。
我总结了一些启发式规则:
- 远短于最长行的内容可能是标题(但也有例外,如上例最后一句),学术论文标题也可能跨两行。
- 以“-”结尾的行是语句的延续(需注意连字符拆分的单词)。
- 仅含
\n的块可标识标题或段落结束(但并非总是如此)。 - 标题有时带编号,如“1. xxx”“1.1. yyy”。
但我不想重复造轮子,希望找到已有的成熟方案。
更新
我了解到FinNLP workshop曾举办过两届PDF语句边界检测的共享任务,2020年第二届的任务有总结论文,所有FinNLP workshop的论文均可查看。尽管第二届任务得分并不理想,但第三届、第四届及即将到来的第五届并未设置类似任务。
内容的提问来源于stack exchange,提问作者Darren Cook
相关产品推荐
相关产品推荐

