MinerU官方文档

快速使用 - MinerU

项目地址在工作站上的路径:/home/lilei/Projects/mineru_test

<aside> 💡

以党校扫描的组织史资料为例

</aside>

代码修改

官方的调用示例:https://github.com/opendatalab/MinerU/blob/master/demo/demo.py。该代码是提供输入目录、输出目录,在本地测试时,偶有出现内存剧增的情况。

代码内只读一个文件的处理数**do_parse()**,构造打开输入路径遍历的方法,其他部分全删掉。改造后的脚本同样传入输入输出路径即可:

nohup python Mineru_run_zzs.py --p /home/lilei/文档/ocr_intput/ --o /home/lilei/文档/ocr_output/1/ > zzs_ocr1.log 2>&1 &

默认的**do_parse()**方法中会生成带标记的pdf文件,但实际运行中因为这个出错(但图片太高清了,重新合成pdf时很吃内存,遇到过因为合成pdf失败导致后续ocr结果全部无法输出的情况)。我们最需要的md文件和_middle.json文件,至于PDF文件有没有无所谓,因此将与输出pdf相关的参数设置为False。程序会输出四种文件:

示例(加粗的就是改成False的):

**f_draw_layout_bbox=False,  # Whether to draw layout bounding boxes
f_draw_span_bbox=False  # Whether to draw span bounding boxes**
f_dump_md=True,  # Whether to dump markdown files
f_dump_middle_json=True,  # Whether to dump middle JSON files
f_dump_model_output=True,  # Whether to dump model output files
**f_dump_orig_pdf=False,  # Whether to dump original PDF files**
f_dump_content_list=True,  # Whether to dump content list files

要先确保进入虚拟环境和项目项目conda activate testcd Project/mineru_test/

开始执行,本项目的数据在工作站挂载的机械硬盘上:/mnt/data/zzs_pdf 。其下共10个文件夹,即10个批次,查看具体情况。文件输出路径:/home/lilei/文档/ocr_ouput。程序会遍历文件夹下的pdf文件,然后执行步骤如下:

graph LR
 获取文件路径 --> 检查是否已做 --> 检查文件是否损坏 --> ocr识别 --> 保存结果文件 --> 删除pdf

运行时候发现,一些pdf文件有损坏,于是编写一个专门检测pdf能否打开的方法。有的文件也能打开,看起来好好的,但是MinerU就是没法读取,因为是个别页面有问题,因此在检查时需要检查每一页都能否打开,之后才开始识别。

如此,需要在整个目录跑完之后,核对一下哪些没有,然后找图片重新生成pdf文件,然后再重新跑一遍。