如何用 olmOCR-Bench 对 Marker 等 OCR 工具跑一遍基准评测?

如何用 olmOCR-Bench 对 Marker 等 OCR 工具跑一遍基准评测? 如何用 olmOCR-Bench 对 Marker 等 OCR 工具跑一遍基准评测【免费下载链接】olmocrToolkit for linearizing PDFs for LLM datasets/training项目地址: https://gitcode.com/GitHub_Trending/ol/olmocrolmOCR 附带一个名为 olmOCR-Bench 的基准套件用来自动评测各类文档级 OCR 工具。它的思路接近单元测试对每个单页 PDF 定义一条条简单、可机器判定的事实比如某句话必须出现在页面上、某表头必须被排除、某个公式必须以相对符号顺序匹配全部按通过/失败计分不采用编辑距离这类软指标。任何能输出 Markdown 或纯文本的 OCR 工具都可以接入——你的工具只需要把基准 PDF 转成 Markdown剩下的交给olmocr.bench.benchmark打分。这篇文章给出在本地机器上跑完一遍完整评测的路径装好 bench 依赖、下载基准数据、用 convert 入口 把 PDF 转成 Markdown以 Marker 为例也适用于 MinerU、Docling 等 已内置的 runner最后运行 benchmark 并核对输出。完整的官方说明见 olmocr/bench/README.md。计分方式先看明白分数怎么来评测直接操作单页 PDF/pdfs目录里的每个 PDF 的每一页都要有对应的解析结果文件命名为{pdf名}_pg{页码}_repeat{重复次数}.md。最终分数是各.jsonl测试文件得分的平均值每个文件得分为其中通过的测试比例并输出 bootstrap 置信区间默认 1000 次采样、95% 置信水平。若某个测试跑了多次重复repeats多数通过才算通过。判分时会做归一化Unicode 统一为 NFC各种连字符/引号变体统一为 ASCIIMarkdown 语法本身会被忽略。准备环境与下载评测数据按 olmocr/bench/README.md 中的流程需要 Python 3.11 的独立 conda 环境conda create -n olmocr python3.11 conda activate olmocr # 进入 olmocr 仓库目录本文假设你已在其中 pip install -e .[bench] # 数学公式测试要在无头浏览器里用 KaTeX 渲染需要先装 Chromium playwright install chromium # 下载基准数据包含 PDF 与 JSON 标注解压到 ./olmOCR-bench huggingface-cli download --repo-type dataset --resume-download allenai/olmOCR-bench --local-dir ./olmOCR-benchpip install -e .[bench]安装的是 bench 所需依赖fuzzysearch、playwright、flask 等见 pyproject.toml 中的bench列表。下载完成后PDF 和.jsonl标注都在./olmOCR-bench/bench_data/下其中bench_data/pdfs/存放全部评测 PDF。如果还要评测 olmOCR 流水线本身olmocr_pipeline方法README 说明需要额外安装[gpu]依赖集并在 NVIDIA GPU 上运行评测 Marker 等其他工具则不需要这部分。用 convert 把基准 PDF 转成 Markdownolmocr.bench.convert接受一个或多个方法名格式为方法名[:keyvalue ...]。内置的方法包括olmocr_pipeline、marker、mineru、docling、gotocr、mistral、gemini、chatgpt、paddlepaddle、transformers等完整映射见 convert.py 中的available_methods。# 只跑 Marker python -m olmocr.bench.convert marker --dir ./olmOCR-bench/bench_data # 一次跑多个工具也可以用 keyvalue 传参数例如 python -m olmocr.bench.convert marker mineru:temperature2 --dir ./olmOCR-bench/bench_data每个方法会在--dir下生成以方法名命名的子目录可用name文件夹名自定义逐页写出_pg{页码}_repeat{重复次数}.md。--parallel默认 1限制并发任务数--repeats默认 1让每页转换多份用于统计多数通过。--force强制重新生成已存在的输出文件不带时已存在的文件会被跳过。--remove_text会把 PDF 每页先截图成图片再拼回 PDF以抹掉 PDF 内嵌文本层对 olmOCR 会同时关闭 document-anchoring。评测纯 OCR 能力时可以用它拉平条件。--failfast在任一页抛异常时立即停下并打印完整堆栈默认行为是记录异常、写一个空文件让该页在评测中记为失败而不是被静默跳过。以 Marker 为例runnerrun_marker.py固定使用force_ocr: True、use_llm: False的配置即纯 Marker、不启用 LLM 混合模式并逐页抽取后转换。需要先安装 Marker 本体例如pip install marker-pdfscripts/run_marker_benchmark.sh 中按版本固定安装默认marker-pdf1.7.5并同时pip install --upgrade torchvision需要固定版本复现时可以参考这个做法。运行 benchmark 并核对输出转换完成后运行python -m olmocr.bench.benchmark --dir ./olmOCR-bench/bench_databenchmark.py 会扫描该目录下所有.jsonl测试文件把除pdfs之外的每个子目录当作一个候选工具的输出目录来评测。运行时有几个实用参数--candidate 文件夹名只评测指定候选而不是目录下所有子目录--test_report results.html额外生成 HTML 报告--max_reports可限制每个.jsonl最多展示多少份不同 PDF--sample N随机抽取 N 个测试先跑适合快速冒烟验证流程是否通畅--skip_baseline跳过自动补加的 baseline 测试检查每页是否有基本内容--force即使缺少部分文件也继续跑默认情况下某个 PDF 的某页在数据集中没有测试条目会直接报错退出。结果怎么读每个候选的输出一段形如文档实际格式数值仅为示意Candidate: marker [FAIL] Test xxx on yyy.pdf page 1 average pass ratio: 0.500 (1/2 repeats passed). Ex: ... Average Score: 76.1% (95% CI: [75.0%, 77.2%]) over 7000 tests.最后还有汇总区Final Summary with 95% Confidence Intervals:对每个候选打印总分分数 ± 置信区间、各测试类型baseline、text_presence、math 等的平均通过率以及按.jsonl文件细分的通过情况如multi_column.jsonl: 80.0% (…tests)。核对要点出现[ERROR]行表示该候选缺少与pdfs/对应的 Markdown 文件命名不匹配_pg{page}_repeat*.md此时该候选会直接按失败错误计入需要回到 convert 阶段检查输出目录[FAIL]行会给出具体是哪个测试、哪份 PDF 哪一页、以及失败解释可直接打开对应.md文件定位问题想找出所有候选都失败的测试可用--output_failed failed.jsonl导出便于排查是工具通病还是测试本身的问题。限制与可选路径表格测试对输出格式敏感部分表格测试依赖 rowspan/colspan 信息只有 HTML 表格能提供只输出 Markdown 表格的工具在这一节拿不到满分见 bench README 的 Table Accuracy 说明。评测条件的公平性各 runner 的内置配置就是评测条件的一部分如 Marker 强制force_ocr、关闭 LLM。换工具或换配置后再比分数时要意识到条件已不同。Beaker 集群路径scripts/run_marker_benchmark.sh 是 AI2 内部集群跑 Marker 评测的脚本依赖beakerCLI、Docker 构建和ai2/oe-data-pdf等工作区还会额外提交一个基于 olmOCR-Mix 子集的耗时测试任务。它同时执行基准评测 性能测试两个实验且要求仓库无未提交改动本地跑单工具评测不需要它上文 convert benchmark 两条命令就是完整路径。预览测试题bench 附带一个标注/预览工具可以查看某个.jsonl里的问题内容例如python -m olmocr.bench.review_app --port 5000 --debug ./olmOCR-bench/bench_data/multi_column.jsonl --force跑完后Final Summary里每个候选的分数 ± 置信区间就是这一轮评测的最终结果分数与 README 结果表中已公布的工具分数对比时注意表中标注*的行是模型作者自报的数值其余为复现值。【免费下载链接】olmocrToolkit for linearizing PDFs for LLM datasets/training项目地址: https://gitcode.com/GitHub_Trending/ol/olmocr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考