Open hiroi-sora opened 10 months ago
版面分析是 pdf2docx 缺失的一环,目前的工作只能算机械的两栏划分。我会学习一下你的算法,希望可以拓展、集成到这个库中。非常感谢。
各位开发者好,我是 Umi-OCR 的作者。
Umi-OCR 是一个开源的OCR软件,目前正在开发PDF扫描件识别的功能。其中的一个难点在于,OCR得到的文本块的顺序,往往与实际阅读顺序不符合,特别是在多栏布局的文档中。我需要根据文档的排版,正确区分出不同列,按实际阅读顺序为文本块进行排序。
pdf2docx 中也涉及一些基于规则的排版解析功能。我浅读了部分代码,这给了我一些启发。
最终,我设计出一个新算法: GapTree_Sort 间隙树排序法 。它通过寻找文本块之间的间隙,将页面切割为不同的纵向区块,构建出布局树。最后,前序遍历布局树,即可得到符合人类阅读习惯的文本排序。
当然,除了排序文本块,也能通过布局树分析更多排版信息。(不过它不是针对PDF设计的,没有考虑块对象本身附带的标签等信息。)
pdf2docx 当前的规则匹配,只支持最多2栏、且列宽不能相差太大。
而 GapTree_Sort 支持更复杂的排版情况。如:任意多栏布局(>2),列宽不一致,跨多列区块等。
另,该算法对于常见布局的时间复杂度仅为 O(n) ,n为文本块数量。仓库中有证明。
GapTree_Sort 是个刚开发的算法,可能有很多不完善的地方;各位可以来测试或提供一些建议。仓库内有示例代码和更详细的算法流程介绍。
不得不说,思路很好,解决也不错,唯一问题就是被大模型降维打击了,无论准确性和复杂度,没有Layoutlmv3简单高效。
各位开发者好,我是 Umi-OCR 的作者。 Umi-OCR 是一个开源的OCR软件,目前正在开发PDF扫描件识别的功能。其中的一个难点在于,OCR得到的文本块的顺序,往往与实际阅读顺序不符合,特别是在多栏布局的文档中。我需要根据文档的排版,正确区分出不同列,按实际阅读顺序为文本块进行排序。 pdf2docx 中也涉及一些基于规则的排版解析功能。我浅读了部分代码,这给了我一些启发。 最终,我设计出一个新算法: GapTree_Sort 间隙树排序法 。它通过寻找文本块之间的间隙,将页面切割为不同的纵向区块,构建出布局树。最后,前序遍历布局树,即可得到符合人类阅读习惯的文本排序。 当然,除了排序文本块,也能通过布局树分析更多排版信息。(不过它不是针对PDF设计的,没有考虑块对象本身附带的标签等信息。) pdf2docx 当前的规则匹配,只支持最多2栏、且列宽不能相差太大。 而 GapTree_Sort 支持更复杂的排版情况。如:任意多栏布局(>2),列宽不一致,跨多列区块等。 另,该算法对于常见布局的时间复杂度仅为 O(n) ,n为文本块数量。仓库中有证明。 GapTree_Sort 是个刚开发的算法,可能有很多不完善的地方;各位可以来测试或提供一些建议。仓库内有示例代码和更详细的算法流程介绍。 https://github.com/hiroi-sora/GapTree_Sort_Algorithm
不得不说,思路很好,解决也不错,唯一问题就是被大模型降维打击了,无论准确性和复杂度,没有Layoutlmv3简单高效。
目前有基于Layoutlmv3的面版识别训练开源吗?我用飞浆的ppstruct效果处理论文外的数据效果不好,目前只能处理对应的分类论文类的,暂时还没有找到通用的识别
各位开发者好,我是 Umi-OCR 的作者。 Umi-OCR 是一个开源的OCR软件,目前正在开发PDF扫描件识别的功能。其中的一个难点在于,OCR得到的文本块的顺序,往往与实际阅读顺序不符合,特别是在多栏布局的文档中。我需要根据文档的排版,正确区分出不同列,按实际阅读顺序为文本块进行排序。 pdf2docx 中也涉及一些基于规则的排版解析功能。我浅读了部分代码,这给了我一些启发。 最终,我设计出一个新算法: GapTree_Sort 间隙树排序法 。它通过寻找文本块之间的间隙,将页面切割为不同的纵向区块,构建出布局树。最后,前序遍历布局树,即可得到符合人类阅读习惯的文本排序。 当然,除了排序文本块,也能通过布局树分析更多排版信息。(不过它不是针对PDF设计的,没有考虑块对象本身附带的标签等信息。) pdf2docx 当前的规则匹配,只支持最多2栏、且列宽不能相差太大。 而 GapTree_Sort 支持更复杂的排版情况。如:任意多栏布局(>2),列宽不一致,跨多列区块等。 另,该算法对于常见布局的时间复杂度仅为 O(n) ,n为文本块数量。仓库中有证明。 GapTree_Sort 是个刚开发的算法,可能有很多不完善的地方;各位可以来测试或提供一些建议。仓库内有示例代码和更详细的算法流程介绍。 https://github.com/hiroi-sora/GapTree_Sort_Algorithm
不得不说,思路很好,解决也不错,唯一问题就是被大模型降维打击了,无论准确性和复杂度,没有Layoutlmv3简单高效。 Layoutlmv3的效果真的这么好么?目前我正在调研版面分析相关的技术,打算学习一下。 我看这个模型出了挺久了
各位开发者好,我是 Umi-OCR 的作者。 Umi-OCR 是一个开源的OCR软件,目前正在开发PDF扫描件识别的功能。其中的一个难点在于,OCR得到的文本块的顺序,往往与实际阅读顺序不符合,特别是在多栏布局的文档中。我需要根据文档的排版,正确区分出不同列,按实际阅读顺序为文本块进行排序。 pdf2docx 中也涉及一些基于规则的排版解析功能。我浅读了部分代码,这给了我一些启发。 最终,我设计出一个新算法: GapTree_Sort 间隙树排序法 。它通过寻找文本块之间的间隙,将页面切割为不同的纵向区块,构建出布局树。最后,前序遍历布局树,即可得到符合人类阅读习惯的文本排序。 当然,除了排序文本块,也能通过布局树分析更多排版信息。(不过它不是针对PDF设计的,没有考虑块对象本身附带的标签等信息。) pdf2docx 当前的规则匹配,只支持最多2栏、且列宽不能相差太大。 而 GapTree_Sort 支持更复杂的排版情况。如:任意多栏布局(>2),列宽不一致,跨多列区块等。 另,该算法对于常见布局的时间复杂度仅为 O(n) ,n为文本块数量。仓库中有证明。 GapTree_Sort 是个刚开发的算法,可能有很多不完善的地方;各位可以来测试或提供一些建议。仓库内有示例代码和更详细的算法流程介绍。 https://github.com/hiroi-sora/GapTree_Sort_Algorithm
不得不说,思路很好,解决也不错,唯一问题就是被大模型降维打击了,无论准确性和复杂度,没有Layoutlmv3简单高效。 Layoutlmv3的效果真的这么好么?目前我正在调研版面分析相关的技术,打算学习一下。 我看这个模型出了挺久了
各位开发者好,我是 Umi-OCR 的作者。
Umi-OCR 是一个开源的OCR软件,目前正在开发PDF扫描件识别的功能。其中的一个难点在于,OCR得到的文本块的顺序,往往与实际阅读顺序不符合,特别是在多栏布局的文档中。我需要根据文档的排版,正确区分出不同列,按实际阅读顺序为文本块进行排序。
pdf2docx 中也涉及一些基于规则的排版解析功能。我浅读了部分代码,这给了我一些启发。
最终,我设计出一个新算法: GapTree_Sort 间隙树排序法 。它通过寻找文本块之间的间隙,将页面切割为不同的纵向区块,构建出布局树。最后,前序遍历布局树,即可得到符合人类阅读习惯的文本排序。
当然,除了排序文本块,也能通过布局树分析更多排版信息。(不过它不是针对PDF设计的,没有考虑块对象本身附带的标签等信息。)
pdf2docx 当前的规则匹配,只支持最多2栏、且列宽不能相差太大。
而 GapTree_Sort 支持更复杂的排版情况。如:任意多栏布局(>2),列宽不一致,跨多列区块等。
另,该算法对于常见布局的时间复杂度仅为 O(n) ,n为文本块数量。仓库中有证明。
GapTree_Sort 是个刚开发的算法,可能有很多不完善的地方;各位可以来测试或提供一些建议。仓库内有示例代码和更详细的算法流程介绍。
https://github.com/hiroi-sora/GapTree_Sort_Algorithm