11月20日,AI数据超能学院第3期直播,我们邀请了上海人工智能实验室 OpenDataLab数据提取工程师 MinerU核心开发者赵小蒙在线详细讲解了MinerU的项目构成及最新模型效果,以及如何更好地基于MinerU进行二次开发和扩展应用。
很多小伙伴意犹未尽,提了很多问题,我们整理了大家比较关心的内容,统一进行回复;另外附上了直播回放,以供参考。
传送门:
● MinerU 模型Github主页:https://github.com/opendatalab/MinerU
● MinerU线上demo(PDF免费转Markdown):https://opendatalab.com/OpenSourceTools/Extractor/PDF
● “探索者计划”成果提交:https://aicarrier.feishu.cn/share/base/form/shrcneaKr8tecz3agwNa90Xqh0g
首先,提问比较多的是,关于MinerU目录与标题的检测识别原理及优化方法:
Q:文档目录是如何检测的?
按我们目前的理解,列表是文本的子集,目录是列表的子集,目前的layout模型只能识别出文本块,我们后面通过line和block的关系,根据一些常见的规则将text块分类为list块和index块,形成了现在的列表和目录,在输出排版的时候会增加额外的换行,让文本不再“坨”在一起,起到优化输出格式的效果。
目前的列表/目录识别能力我们基本满意,能够覆盖日常遇到的绝大多数场景,我们也会针对bad case 增加目录识别的规则。MinerU完整的目录规则主函数可以在这里查看:https://github.com/opendatalab/MinerU/blob/master/magic_pdf/para/para_split_v3.py
Q:标题只能获取一级吗?有什么办法获取多级标题?
目前标题只能获取一级,比如明显加粗、加大的文本,模型会提取为标题。因为是靠视觉特征进行区分的,不同文档标题特征不同,目前没有通配的方案,获取多层级标题还是比较困难的。
我们后续也会考虑增加2到3级的标题提取,大致思路是:获取整篇文档的标题,把所有标题的line收集起来,做个聚类,估计会分到两级或三级,这是个比较折中的方案。
另外,大家对布局检测相关内容也比较感兴趣:
Q:Layoutreader是用什么方法做的?
Layoutreader是由微软实验室开源的一个项目,最早基于单词来预测顺序,后有研究员改为基于“行”去排序,我们将其改为了基于“块”去排序,大家感兴趣可以去看Layoutreader仓库和论文:https://github.com/ppaanngggg/layoutreader
另外对我们布局检测模型 DocLayout-YOLO感兴趣的,可以查看具体的代码和论文,训练方法和数据集也已经开源,支持微调:https://github.com/opendatalab/DocLayout-YOLO
Q:色块分割怎么判断顺序,是根据语义吗?
MinerU没有采用语义进行拼接,而是纯模型输出的顺序,没做其他处理。其实阅读顺序无非是左到右,或者上到下,是有一些细节特征的,比如前后顺序的色块距离会更近一些,类似这样的特征模型进行自动学习,给出判断。
Q:图片caption如何与图片进行关联?
图片与caption关联这个功能我们已经支持了。在MinerU生成的middle.json中间态文档中,会把图片和对应的caption放在一个内容里,可在content list.json中查看。
还有朋友问了提取的文本回溯及样式还原相关问题:
Q:文本可以回溯到PDF的具体位置吗?
可以的,在middle.json里每个块都是一个元素,是一个dict,有相应的页码数据和分类,另外还有其在页面中的宽度、高度、坐标等具体位置信息(page_info字段里能看)。
大家可以通过这个去定位和回溯元素的位置,当前markdown里不支持直接定位,需要自行通过middle.json进行定制。不过这个功能我们也有在考虑,后续会通过不同方式尽力满足大家需求,争取提供定位、二次编辑,如果发现识别有错误,支持标注修改;敬请期待。
另外如果你想将提取的数据还原为原来的样式,也能根据middle.json提供的元素坐标、位置参数进行还原。这个是根据内容区块位置来的,不需要考虑分栏因素。
如何基于MinerU二次开发,也是问得比较多的问题:
Q:二次开发,直接把MinerU当作工具调用还是可以自己修改模型?
都是可以的,不过想修改模型的话,需要先在 PDF-Extract-Kit 模型库里查看哪些模型可以改,哪些不可以改。能修改或微调的模型一般都会提供训练、微调代码,比如Doclayout-YOLO可以,LayoutLMv3就不行。
另外你也可以直接调用模型或者MinerU输出的中间态文件(分别是model.json、middle.json),调用相关函数,修改pipline,添加自己的逻辑等。其中model.json是 PDF-Extract-Kit 模型输出的文件,主要是进行元素画框分类,包含属性、页码等;middle.json则是MinerU工作流输出的带具体文本、内容、坐标、block\line\span等详细信息的文件。
同时MinerU提供API供大家直接调用,demo前端代码也开源了,大家可以按需使用。
API申请,请关注OpenDataLab公众号,后台回复“API”关键词,即可获取。
如果你有MinerU相关衍生应用、项目,或者相关技术文章、功能pr贡献,都可以参加“探索者计划”,提交你的成果,领取奖励:https://aicarrier.feishu.cn/share/base/form/shrcneaKr8tecz3agwNa90Xqh0g
表格\OCR模型以及magic-doc、magic-html也受到大家的关注:
Q:旋转表格能提取吗?跨页表格能合并吗?
旋转表格可以提取,比较简单,识别出旋转之后再旋转过来就可以了。我们也在考虑出这个功能,不过目前团队人力有限,还是更聚焦在提升解析效率和效果上。
跨页表合并MinerU不支持,因为特异性比较大,需要根据内容去判断,我们目前不考虑。
Q:支持“文本+OCR”混合识别吗?手写体有什么好的识别方案?
在已经发布的0.10.0版本,我们将默认的文本识别能力升级到了文本+ocr混合识别,在文本类型的PDF上效果提升很大,可以期待一下
Q:doc转PDF用magic_pdf效果好?还是直接用magic_doc效果好?后续会把magic_doc和magic_pdf合在一起吗?magic_html会更新吗?
doc和docx直接用magic-doc提取会好一点,文本的格式和顺序基本都能保留,但是没有图片的提取能力,目前magic-doc已经处于停止维护状态了,如果有多模态的提取需求,可以试着用liboffice将doc文档转成pdf再使用magic-pdf提取。magic-html功能基本完善了,短时间内不会再有更新。
以上就是本次分享的热门问答摘录,完整内容可查看回放
👇
PDF提取神器、RAG必备组件MinerU直播回放
传送门:
● MinerU 模型Github主页:https://github.com/opendatalab/MinerU
● MinerU线上demo(PDFdown):https://opendatalab.com/OpenSourceTools/Extractor/PDF
● “探索者计划”成果提交:https://aicarrier.feishu.cn/share/base/form/shrcneaKr8tecz3agwNa90Xqh0g