Alvaro Tamura
Alvaro Tamura
nougat
> 各位开发者好,我是 [Umi-OCR](https://github.com/hiroi-sora/Umi-OCR) 的作者。 > > Umi-OCR 是一个开源的OCR软件,目前正在开发PDF扫描件识别的功能。其中的一个难点在于,OCR得到的文本块的顺序,往往与实际阅读顺序不符合,特别是在多栏布局的文档中。我需要根据文档的排版,正确区分出不同列,按实际阅读顺序为文本块进行排序。 > > pdf2docx 中也涉及一些基于规则的排版解析功能。我浅读了部分代码,这给了我一些启发。 > > 最终,我设计出一个新算法: [GapTree_Sort 间隙树排序法](https://github.com/hiroi-sora/GapTree_Sort_Algorithm) 。它通过寻找文本块之间的间隙,将页面切割为不同的纵向区块,构建出布局树。最后,前序遍历布局树,即可得到符合人类阅读习惯的文本排序。 > > 当然,除了排序文本块,也能通过布局树分析更多排版信息。(不过它不是针对PDF设计的,没有考虑块对象本身附带的标签等信息。) > > pdf2docx 当前的规则匹配,只支持最多2栏、且列宽不能相差太大。 > > 而 GapTree_Sort 支持更复杂的排版情况。如:任意多栏布局(>2),列宽不一致,跨多列区块等。...
还有个致命在于引入了ImageBlock ImageSpan, 并且与TextSpan同级的数据结构... 但是整个项目的亮点也很多,比如debug layout的设计, word适配字体样式等各种细节的处理思路
因为这些原因,所以项目也很难维护,有时间和精力的,就进行重构吧~!
[21.pdf](https://github.com/ArtifexSoftware/pdf2docx/files/14398445/21.pdf) bu补充下这个,格式排版就很不合理了,左右栏无法正确识别和布局
原始图: 转换word图: 这个完全无从下手,根源在2点,1布局,2缩放倍数/字体 计算误差
建议你先提供下文件
I think Unable to resolve, only refactoring.
使用layoutlmv3,可以识别出页眉,页脚的blocks,然后过滤掉区域即可