ArtifexSoftware / pdf2docx

Open source Python library for converting PDF to DOCX.
https://pdf2docx.readthedocs.io
GNU Affero General Public License v3.0
2.5k stars 368 forks source link

是否可以利用OCR支持扫描版PDF #89

Open bikerr opened 3 years ago

bikerr commented 3 years ago

是否可提供OCR 或者版面分析接口 支持扫描版PDF

dothinking commented 3 years ago

这是pdf2docx的一个长期目标。

OCR相对成熟,因此文本内容的获取和重建问题不大,但是格式重建相对困难。不同于普通PDF文件可以直接提取路径(矢量图,表格线,图形都可视为路径path),扫描版PDF需要从图片中识别这些元素,而这些元素的粒度又比版面分析的结果要精细,因此需要很多额外工作。

图片的识别和重建依赖于版面分析,我最近也在看一些版面分析的论文,基本都是机器学习的方法。如果说保存训练好的模型做本地识别,那么感觉只适合做服务端的工具,很难像现在作为python包分发使用:一个是模型文件太大不利于分发,另一个是需要用户安装机器学习工具链增加使用难度。

至于你提到的版面分析接口,听起来是个不错的方法,不知道有没有推荐?

bikerr commented 3 years ago

这确实是一项长期目标,不过我觉得可以先拆分 利用开源的力量先从简单的纯OCR文本分析做起,毕竟绝大多数扫描版PDF还是文字居多 ,而且OCR模型一般都比较小 可以做到分发 适合客户端使用 版面分析我最近也在看相关的东西,目前来说可能模型体积确实会大一些,目前开源方案还比较少。至于接口的话 第三方接口还是收费会比较多的,目前应该不会考虑。

SWHL commented 1 year ago
ericosmic commented 1 year ago

@SWHL 目前PPStructure 的版面恢复效果很不理想,因为模型识别的元素非常有限,甚至也使用pdf2docx模块来作非扫描pdf的转化,所以并不能做到真正的版式还原。 WPS的版式还原是我找到作的最好的 , 不知道他们是使用什么方法。

SWHL commented 1 year ago
ericosmic commented 6 months ago

@SWHL 要做到版式恢复效果好,肯定需要对版面作更精细的识别,包括段落对齐方式,段落识别,字体大小,缩进等等,但是排版方式的自由度太大了,如果要使用机器学习或在深度学习来学习这些特征,需要非常大量的真实数据来训练才能有好的效果。

xsank commented 3 weeks ago

好像没有万金油的版面分析模型,不同类型的pdf文件,比如:新闻,论文,证券,期刊,电子书等等,版面差异非常大,已经到了需要垂直领域单独优化模型的地步了,而这又依赖于高质量的数据集