一周1.2k星!兼具质量与效率的OCR模型MonkeyOCR,支持多样化的中英文PDF



简介

MonkeyOCR采用结构-识别-关系(SRR)三元组范式,既简化了模块化方法的多工具流程,又避免了使用大型多模态模型处理整页文档的低效问题。

  1. 与基于流程的MinerU方法相比,我们在九种中英文文档上的平均性能提升了5.1%,其中公式识别提升15.0%,表格识别提升8.6%。
  2. 与端到端模型相比,我们的30亿参数模型在英文文档上的平均表现最佳,超越了Gemini 2.5 Pro和Qwen2.5 VL-72B等模型。
  3. 在多页文档解析方面,我们的方法处理速度达到每秒0.84页,优于MinerU(0.65)和Qwen2.5 VL-7B(0.12)。

当前MonkeyOCR暂不支持拍摄文档的解析,但我们将在后续更新中持续改进,敬请期待!
目前模型部署在单GPU上,若同时上传文件的用户过多,可能会出现“当前应用繁忙”等问题。我们正在积极支持Ollama等部署方案,以期为更多用户提供更流畅的体验。此外,演示页面上显示的处理时间不仅包含计算时间,还包括结果上传等其他开销。在高流量时段,该时间可能会更长。MonkeyOCR、MinerU和Qwen2.5 VL-7B的推理速度均在H800 GPU上测得。

快速开始

1. 安装MonkeyOCR

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineconda create -n MonkeyOCR python=3.10conda activate MonkeyOCR
git clone https://github.com/Yuliang-Liu/MonkeyOCR.gitcd MonkeyOCR
# 安装pytorch,请根据您的CUDA版本选择对应命令,参考:https://pytorch.org/get-started/previous-versions/pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu124 pip install -e .

2. 下载模型权重

从Huggingface下载我们的模型:

ounter(lineounter(lineounter(linepip install huggingface_hub
python tools/download_model.py

也可以从ModelScope下载:

ounter(lineounter(lineounter(linepip install modelscope
python tools/download_model.py -t modelscope

3. 推理

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(line# 确保当前目录为MonkeyOCRpython parse.py path/to/your.pdf# 或使用图片作为输入python parse.py path/to/your/image# 指定输出路径和模型配置文件路径python parse.py path/to/your.pdf -o ./output -c config.yaml

输出结果

MonkeyOCR会生成三种类型的输出文件:

  1. 处理后的Markdown文件your.md):最终解析的文档内容,包含文本、公式、表格等结构化元素。
  2. 布局结果your_layout.pdf):在原PDF上绘制的布局结果。
  3. 中间块结果your_middle.json):包含所有检测块的详细信息,如坐标、内容、类型及块间关系。

4. Gradio演示

ounter(lineounter(lineounter(line# 准备Gradio环境pip install gradio==5.23.3pip install pdf2image==1.17.0
ounter(lineounter(line# 启动演示python demo/demo_gradio.py

修复RTX 3090/4090等GPU的共享内存错误(可选)

我们的30亿参数模型可在NVIDIA RTX 3090上高效运行。但若使用LMDeploy作为推理后端,在RTX 3090/4090等GPU上可能会遇到兼容性问题,尤其是以下错误:

ounter(linetriton.runtime.errors.OutOfResources: out of resource: shared memory

可通过以下命令修复:

ounter(linepython tools/lmdeploy_patcher.py patch

⚠️ 注意:此命令会修改环境中LMDeploy的源代码。
如需恢复,请运行:

ounter(linepython tools/lmdeploy_patcher.py restore

特别感谢@pineking提供的解决方案!

切换推理后端(可选)

可按以下步骤将推理后端切换为transformers

  1. 安装依赖(如未安装):

    # 安装flash attention 2,可从https://github.com/Dao-AILab/flash-attention/releases/下载对应版本pip install flash-attn==2.7.4.post1 --no-build-isolation


  2. 打开model_configs.yaml文件。
chat_config.backend设置为transformers
根据GPU内存调整batch_size以确保稳定运行。

示例配置:

ounter(lineounter(lineounter(linechat_config:  backend: transformers  batch_size10  # 根据GPU内存调整

可视化演示

快速体验我们的在线演示:http://vlrlabmonkey.xyz:7685

使用演示非常简单:

  1. 上传PDF或图片。
  2. 点击“解析”按钮,模型将对输入文档执行结构检测、内容识别和关系预测,最终输出Markdown格式的文档。
  3. 选择提示词并点击“Test by prompt”,模型将根据提示词对图片内容进行识别。


公式文档示例

表格文档示例


报纸示例

财务报表示例

项目地址

https://github.com/Yuliang-Liu/MonkeyOCR/blob/main/README.md

https://huggingface.co/echo840/MonkeyOCR




扫码加入技术交流群,备注「开发语言-城市-昵称

(文:GitHubStore)

发表评论

×

下载每时AI手机APP

 

和大家一起交流AI最新资讯!

立即前往