链载Ai

标题: PDF文档解析--MinerU [打印本页]

作者: 链载Ai    时间: 昨天 21:19
标题: PDF文档解析--MinerU
MinerU是一款将PDF转化为机器可读格式的工具(如markdown、json),可以很方便地抽取为任意格式。A high-quality tool for convert PDF to Markdown and JSON.一站式开源高质量数据提取工具,将PDF转换成Markdown和JSON格式。

主要功能


对比分析:

功能性上:

1. 传统的 PDF 解析库功能性上支持比较差,在 OCR, 提取表格内容,保留文本顺序,提取图片,保存为md格式上会缺少支持; 比如:pymypdf,pdfminer,pdfplumber, pypdf2;

2. 比较新,比较常用的 PDF 开源工具,*** deepdoc, MinerU*** 的 功能性支持比较好;

当前被使用度:

整体来说 deepdoc 和 MinerU 比较有名,很多 RAG 项目有在用:

1. 比如 Ragflow 用的deepdoc; 本身就是同一个开源团队做的工作;

2. 最近,MinerU 现在被很多项目接入了,在通用开源领域的衔接

势头不错;比如dify 联合开发了MinerU 的插件,便于使用;

目 处理流程 和 框架:

处理流程:

1. 预处理:

文档预处理。此阶段使用 PyMuPDF https://github.com/pymupdf/PyMuPDF读取 PDF 文件,

1. 过滤出无法处理的文件(例如加密文件)

2. 包括文档的可解析性(分为可解析 PDF 和扫描 PDF)

3. 语言类型检测(也可手输入);目前只支持 中英文;

4. 提取 PDF 元数据:如总页数、页面尺寸(宽度和高度)以及其他相关属性。

2. 文档内容解析:

此阶段采用 PDF-Extract-Kit,一个高质量的 PDF 文档提取算法库,来解析关键文档内容。

共调用5个模型:

1. 首先进行布局分析,包括布局和公式检测。

选用:doclayout_yolo;

2. 然后针对不同区域应用不同的识别器:

1. OCR 用于文本和标题:

2. 公式检测 和 公式识别 用于公式。分别调用: yolo_v8_mfd, unimernet_small(UniMERNet);

3. 表格识别 用于表格。模型: 调用了 rapidtable库下的 unitable;slanet_plus;老版本还支持:TableMaster和StructEqTable

3.文档内容后处理:

基于第二阶段的输出,本阶段移除无效区域,根据区域定位信息拼接内容,最终获取不同文档区域的定位、内容和排序信息。

后处理阶段主要解决内容排序问题。因为模型输出的文本、图像、表格和公式框之间可能存在重叠,以及通过 OCR 或 API 获取的文本行之间频繁重叠,对文本和元素进行排序是一个重大挑战;

1. 布局识别类型识别框重叠问题:

采用了 BBox 关系的解决方案包括以下方面:

1. 包含关系。移除图像和表格区域以及公式框内包含的框(公式和文本块)。

2. 部分重叠关系。部分重叠的文本框在垂直和水平方向上收缩以避免相互覆盖,确保最终位置和内容不受影响,从而促进后续排序操作。对于文本与表格/图像的部分重叠,通过暂时忽略图像和表格来确保文本的完整性。

2. 顺序问题:

排序基于人类阅读的顺序;上到下,左到右;

4. 格式转换:

根据文档后处理的结果,可以为后续使用生成用户所需的多种格式,例如 Markdown。






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5