尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

MinerU 让 PDF 解析不断段:跨页段落拼接实战指南

MinerU 让 PDF 解析不断段:跨页段落拼接实战指南 MinerU 让 PDF 解析不断段跨页段落拼接实战指南【免费下载链接】MinerUTransforms complex documents like PDFs and Office docs into LLM-ready markdown/JSON for your Agentic workflows.项目地址: https://gitcode.com/GitHub_Trending/mi/MinerUMinerU 是一个把 PDF、Word、PPT、Excel 等文档转换成 LLM 可用的 Markdown 和 JSON 的解析工具。其中段落拼接把被页面边界截断的文字重新连成完整段落是最容易被忽视、却最影响阅读体验的环节段落被拦腰截断、续表一拆两半、目录行号混进正文都是它的锅。三种你最可能遇到的坏输出 ⚠️先看看不处理段落拼接时PDF 转 Markdown 会坏成什么样跨页段落一页结尾的句子和下一页开头的句子被拆成两个段落Markdown 里凭空多出一次换行跨页表格一张 20 行的表在第 5 页断成表 1第 6 页剩下表 2合并单元格和列结构全丢了目录和列表右侧带行号的目录被当成普通正文或者列表项被拆成一堆单行段落MinerU 的管线里段落拼接发生在布局识别之后、生成 Markdown 之前。整条链路大致是这一节你拿到了问题清单后面三节分别对号入座讲这三种坏输出是怎么被修掉的。跨页段落是怎么接回去的 要解决一页结尾的句子被截断MinerU 的做法不是逐页独立处理而是把整份 PDF 的所有文本块布局模型识别出的最小文字区域按阅读顺序排成一个跨页的大列表然后在这个列表上两两比较相邻块判断该不该合。核心逻辑在para_split.py里规则可以拆成 6 条上一块的最后一行是满行文字一直排到块右边界说明大概率是被版面切断的而不是自然结束行尾没有收束标点. ! ? 。 : ;这些字符都不出现。以句号结尾的句子绝不会被拼进下一段两块宽度接近宽度差小于较窄那块天然挡住双栏文档左右栏被误拼下一块首字符不是数字或大写以1、A开头的多半是新的段落或列表项不合位置关系合理下一块顶部不超过上一块底部至少一块是多行的孤零零的单行碎片不参与合并6 条同时满足才合并。如果两块恰好一前一后跨了页被拼进上一块的每一行还会被打上cross_page标记方便下游输出时知道这段文字经历了跨页。这一节的结果跨页段落基本不再断行且靠满行 无标点双重条件避免了把两个独立段落误拼成一个。跨页续表怎么合并不拆断 表格跨页更麻烦即使两页上的表结构完全一致直接按位置拼也可能拼到别的表上。MinerU 的跨页表格合并cross_page_table_merge用两道保险保险做法结构校验对比上下两块的列数等结构特征对不上就不合续表标记识别识别(续表)(continued)续表等标题确认语义上就是同一张表续表标记的识别细节挺能说明用心程度全角括号、全角空格会先归一成半角再匹配(续表)和( 续表 )都能认对continued这类词做了词边界检查——discontinued已停产里的 continued 不会被误判成续表支持的标记包括续、续表、续上表、(continued)、(cont.)、(contd)、(…continued)、续表等这套行为默认开启想关掉比如你确定文档里有同名但无关的表可以设一个环境变量export MINERU_TABLE_MERGE_ENABLEfalse # 关闭跨页表格合并这一节的结果跨页表在输出里是一张完整的表行数和列结构都对得上原 PDF。目录和列表怎么在合并时不坏掉 段落合并最大的副作用风险是过度合并——把目录行、列表项粘成一大坨。MinerU 在合并前先做一轮几何特征分类把文本块重新标记为目录index、列表list或普通正文判断依据不是文字内容而是每行相对块边界的对齐情况目录80% 以上的行以数字开头或结尾且整块左侧或右侧贴边典型目录就是左对齐文字 右对齐页码列表多行文本左侧贴边但右侧参差不齐每行长度不一形成狗牙边缘或者 80% 以上的行以. 。 ;结尾居中短行组每行都不贴两边、横向居中且高度比大于 0.4 的块按列表处理分类之后列表块和目录块会走自己的合并路径——只合同类且跨页时同样打cross_page标记。此外还有一个保护规则一组块里如果每块都不超过 3 行典型的短句列表组整组不会被当作普通正文合并。这一节的结果目录输出时编号和页码各就各位列表保持一项一行的结构不会被卷进相邻段落。输出哪里看、代码在哪看跑完解析后每页会产出para_blocks拼接后的段落块和 middle JSONMarkdown 就是从它渲染出来的输出文件结构可以查 输出文件说明。想深入源码两个入口就够段落拼接与列表/目录识别para_split.py跨页表格合并与续表判断runtime_utils.py、table_continuation.py总结一下你拿到的东西跨页段落能接上、续表能合成一张、目录列表不被卷走——PDF 解析到 Markdown 之后不用再人工修断行。【免费下载链接】MinerUTransforms complex documents like PDFs and Office docs into LLM-ready markdown/JSON for your Agentic workflows.项目地址: https://gitcode.com/GitHub_Trending/mi/MinerU创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表