Show HN: Qwen-2.5-32B 现在是最佳开源 OCR 模型
Omni OCR Benchmark
一个基准测试工具,用于比较不同大型多模态模型(如 gpt-4o
)的 OCR 和数据提取能力,评估文本和 JSON 提取的准确性。此基准测试的目标是发布一个全面的 OCR 准确性基准,涵盖传统的 OCR 提供商和多模态语言模型。评估数据集和方法均为开源,我们鼓励扩展此基准测试以涵盖任何其他提供商。
开源 LLM 基准测试结果 (2025 年 3 月) | 数据集 基准测试结果 (2025 年 2 月) | 数据集
方法论
主要目标是评估从文档中提取 JSON 的能力。为了评估这一点,Omni 基准测试运行 文档 ⇒ OCR ⇒ 提取。衡量模型 OCR 页面的能力,并以 LLM 可以解析的格式返回内容。
评估指标
JSON 准确率
我们使用修改后的 json-diff 来识别预测的 JSON 对象和真实 JSON 对象之间的差异。您可以查看 evaluation/json.ts 文件以查看确切的实现。准确率计算如下:
$$\text{准确率} = 1 - \frac{\text{差异字段的数量}}{\text{总字段数}}$$
文本相似度
虽然主要的基准测试指标是 JSON 准确率,但我们已包括 levenshtein distance 作为提取文本和真实文本之间文本相似度的度量。距离越小表示相似度越高。请注意,此评分方法会严重惩罚不符合真实数据确切布局的准确文本。
在下面的示例中,LLM 可以毫无问题地解码两个文本块。所有信息都是 100% 准确的,但标题文本(地址、电话号码等)的略微重新排列会导致编辑距离评分的巨大差异。
运行基准测试
- 克隆 repo 并安装依赖项:
npm install
- 准备测试数据
1. 对于本地数据,将单个文件添加到
data
文件夹。 2. 要从数据库中提取数据,请在.env
中添加DATABASE_URL
。 - 将
models.example.yaml
文件复制到models.yaml
。在.env
中为您要测试的模型设置 API 密钥。查看 支持的模型。 - 运行基准测试:
npm run benchmark
- 结果将保存在
results/<timestamp>/results.json
文件中。
支持的模型
要启用特定模型,请在 src
目录中创建一个 models.yaml
文件。查看 models.example.yaml 文件以获取所需的变量。
models:
- ocr: gemini-2.0-flash-001 # 用于 OCR 的模型
extraction: gpt-4o # 用于 JSON 提取的模型
- ocr: gpt-4o
extraction: gpt-4o
directImageExtraction: true # 是否使用模型原生的图像提取功能
您可以在 src/models/ 文件夹中查看每个模型的配置。
闭源 LLM
| 模型提供商 | 模型 | OCR | JSON 提取 | 所需 ENV 变量 |
|---|---|---|---|---|
| Anthropic | claude-3-5-sonnet-20241022
| ✅ | ✅ | ANTHROPIC_API_KEY
|
| OpenAI | gpt-4o
| ✅ | ✅ | OPENAI_API_KEY
|
| Gemini | gemini-2.0-flash-001
, gemini-1.5-pro
, gemini-1.5-flash
| ✅ | ✅ | GOOGLE_GENERATIVE_AI_API_KEY
|
| Mistral | mistral-ocr
| ✅ | ❌ | MISTRAL_API_KEY
|
| OmniAI | omniai
| ✅ | ✅ | OMNIAI_API_KEY
, OMNIAI_API_URL
|
开源 LLM
| 模型提供商 | 模型 | OCR | JSON 提取 | 所需 ENV 变量 |
|---|---|---|---|---|
| Gemma 3 | google/gemma-3-27b-it
| ✅ | ❌ | |
| Qwen 2.5 | qwen2.5-vl-32b-instruct
, qwen2.5-vl-72b-instruct
| ✅ | ❌ | |
| Llama 3.2 | meta-llama/Llama-3.2-11B-Vision-Instruct-Turbo
, meta-llama/Llama-3.2-90B-Vision-Instruct-Turbo
| ✅ | ❌ | |
| ZeroX | zerox
| ✅ | ✅ | OPENAI_API_KEY
|
云 OCR 提供商
| 模型提供商 | 模型 | OCR | JSON 提取 | 所需 ENV 变量 |
|---|---|---|---|---|
| AWS | aws-text-extract
| ✅ | ❌ | AWS_ACCESS_KEY_ID
, AWS_SECRET_ACCESS_KEY
, AWS_REGION
|
| Azure | azure-document-intelligence
| ✅ | ❌ | AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT
, AZURE_DOCUMENT_INTELLIGENCE_KEY
|
| Google | google-document-ai
| ✅ | ❌ | GOOGLE_LOCATION
, GOOGLE_PROJECT_ID
, GOOGLE_PROCESSOR_ID
, GOOGLE_APPLICATION_CREDENTIALS_PATH
|
| Unstructured | unstructured
| ✅ | ❌ | UNSTRUCTURED_API_KEY
|
- LLM 被指示使用以下 system prompts 进行 OCR 和 JSON 提取。
- 对于 Google Document AI,您需要在
data
文件夹中包含google_credentials.json
。
基准测试仪表板
您可以使用基准测试仪表板轻松查看每次测试运行的结果。查看 dashboard documentation 了解更多详细信息。
许可证
该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。