海外访问:www.kdjingpai.com
Ctrl + D 收藏本站

dots.ocr 是一个强大的多语言文档解析工具,基于 1.7B 参数的视觉-语言模型(VLM),能够同时进行布局检测和内容识别。它在 OmniDocBench 等基准测试中展现了最先进的性能,特别是在文本、表格和阅读顺序解析方面表现出色。dots.ocr 支持多种语言,包括低资源语言,适合处理复杂文档如学术论文、财务报告等。相比传统多模型流水线,dots.ocr 使用单一模型架构,通过简单更改输入提示即可切换任务,推理速度快且效率高。用户可以通过 GitHub 上的开源代码和提供的 Docker 镜像快速部署和使用。

 

功能列表

  • 布局检测:识别文档中的元素(如文本、表格、公式、图片等)并提供精确的边界框(bbox)坐标。
  • 内容识别:提取文档中的文本、表格(以 HTML 格式输出)、公式(以 LaTeX 格式输出)等内容。
  • 多语言支持:支持 100 种语言的文档解析,特别在低资源语言上表现优异。
  • 阅读顺序优化:按照人类阅读习惯排序文档元素,确保输出的逻辑性。
  • 快速推理:基于 1.7B 参数的紧凑模型,推理速度优于许多大型模型。
  • 灵活提示切换:通过不同提示(如 prompt_layout_only_enprompt_ocr)实现特定任务的解析。
  • 输出多样化:生成 JSON 格式的结构化布局数据、Markdown 文件以及带边界框的可视化图像。

使用帮助

安装流程

要使用 dots.ocr,首先需要安装必要的环境和模型权重。以下是详细的安装步骤:

  1. 创建虚拟环境
    conda create -n dots_ocr python=3.12
    conda activate dots_ocr
    

  1. 克隆代码仓库
    git clone https://github.com/rednote-hilab/dots.ocr.git
    cd dots.ocr
    
  2. 安装 PyTorch 和依赖
    根据你的 CUDA 版本,安装对应版本的 PyTorch。例如:

    pip install torch==2.7.0 torchvision==0.22.0 torchaudio==2.7.0 --index-url https://download.pytorch.org/whl/cu128
    pip install -e .
    
  3. 下载模型权重
    使用提供的脚本下载模型权重。注意,模型保存路径的文件夹名不能包含句点,建议使用 DotsOCR

    python3 tools/download_model.py
    
  4. 使用 Docker 镜像(可选)
    如果遇到安装问题,可以使用官方提供的 Docker 镜像:

    git clone https://github.com/rednote-hilab/dots.ocr.git
    cd dots.ocr
    pip install -e .
    

部署方式

dots.ocr 推荐使用 vLLM 进行部署,以获得最佳推理性能。以下是基于 vLLM 的部署步骤:

  1. 注册模型到 vLLM
    python3 tools/download_model.py
    export hf_model_path=./weights/DotsOCR
    export PYTHONPATH=$(dirname "$hf_model_path"):$PYTHONPATH
    sed -i '/^from vllm\.entrypoints\.cli\.main import main$/a\
    from DotsOCR import modeling_dots_ocr_vllm' `which vllm`
    
  2. 启动 vLLM 服务
    CUDA_VISIBLE_DEVICES=0 vllm serve ${hf_model_path} --tensor-parallel-size 1 --gpu-memory-utilization 0.95 --chat-template-content-format string --served-model-name model --trust-remote-code
    
  3. 运行 vLLM API 示例
    python3 ./demo/demo_vllm.py --prompt_mode prompt_layout_all_en
    

或者,使用 HuggingFace 进行推理:

python3 demo/demo_hf.py

文档解析操作

在 vLLM 服务启动后,可以通过以下命令解析图像或 PDF 文件:

  1. 解析单张图像
    python3 dots_ocr/parser.py demo/demo_image1.jpg
    
  2. 解析 PDF 文件
    对于多页 PDF,建议设置较大的线程数:

    python3 dots_ocr/parser.py demo/demo_pdf1.pdf --num_threads 64
    
  3. 仅进行布局检测
    python3 dots_ocr/parser.py demo/demo_image1.jpg --prompt prompt_layout_only_en
    
  4. 仅提取文本(排除页眉页脚)
    python3 dots_ocr/parser.py demo/demo_image1.jpg --prompt prompt_ocr
    
  5. 基于边界框的解析
    python3 dots_ocr/parser.py demo/demo_image1.jpg --prompt prompt_grounding_ocr --bbox 163 241 1536 705
    

输出结果

解析完成后,dots.ocr 会生成以下文件:

  • JSON 文件(如 demo_image1.json):包含布局元素的边界框、类别和文本内容。
  • Markdown 文件(如 demo_image1.md):将所有检测到的文本内容合并为 Markdown 格式,另有 demo_image1_nohf.md 版本排除页眉页脚。
  • 可视化图像(如 demo_image1.jpg):在原始图像上绘制检测到的边界框。

运行演示

可以通过以下命令启动交互式演示界面:

python demo/demo_gradio.py

或运行基于边界框的 OCR 演示:

python demo/demo_gradio_annotion.py

注意事项

  • 模型保存路径:确保模型保存路径不包含句点(如 DotsOCR),否则可能导致模块加载错误。
  • 图像分辨率:建议图像分辨率不超过 11289600 像素,PDF 解析时 DPI 设置为 200。
  • 特殊字符处理:连续的特殊字符(如 ... 或 _)可能导致输出异常,建议使用 prompt_layout_only_en 或 prompt_ocr 提示。

应用场景

  1. 学术论文解析
    dots.ocr 可以高效解析学术论文中的文本、公式和表格,生成结构化的 JSON 数据和 Markdown 文档,适合研究人员整理文献内容。
  2. 财务报告处理
    对于财务报告,dots.ocr 能准确提取表格和文本内容,生成 HTML 格式的表格,便于数据分析和存档。
  3. 多语言文档整理
    支持 100 种语言的解析,适合处理多语言合同、法律文件等,确保内容和布局准确提取。
  4. 教育资料整理
    解析教科书、试卷等教育材料,提取公式(以 LaTeX 格式)和文本,方便教师和学生整理学习资源。

QA

  1. dots.ocr 支持哪些语言?
    dots.ocr 支持 100 种语言,包括英语、中文、西藏语、俄语等,尤其在低资源语言上表现优异。
  2. 如何处理大型 PDF 文件?
    使用 parser.py 脚本并设置 --num_threads 参数(如 64),以加速多页 PDF 的解析。
  3. 解析结果如何输出?
    结果包括 JSON 文件(结构化数据)、Markdown 文件(文本内容)和可视化图像(带边界框)。
  4. 如何解决模型加载错误?
    确保模型保存路径不含句点(如使用 DotsOCR),并检查 vLLM 注册脚本是否正确执行。
0已收藏
0已赞

相关推荐

找不到AI工具?在这试试!

输入关键词,即可 无障碍访问 必应 搜索,快速找到本站所有 AI 工具。

回顶部

zh_CN简体中文