gpt-4o와 같은 다양한 거대 멀티모달 모델 (Large Multimodal Models)의 OCR 및 데이터 추출 능력을 비교하고, 텍스트와 JSON 추출 정확도를 모두 평가하는 벤치마킹 도구입니다. 이 벤치마크의 목표는 기존의 전통적인 OCR 제공업체와 멀티모달 언어 모델 (Language Models) 전반에 걸친 OCR 정확도에 대한 포괄적인 벤치마크를 발표하는 것입니다. 평가 데이터셋과 방법론은 모두 오픈 소스 (Open Source)이며, 추가적인 제공업체를 포함하여 이 벤치마크를 확장하는 것을 권장합니다.
오픈 소스 LLM 벤치마크 결과 (2025년 3월) | 데이터셋 (Dataset)
벤치마크 결과 (2025년 2월) | 데이터셋 (Dataset)
주요 목표는 문서로부터의 JSON 추출을 평가하는 것입니다. 이를 평가하기 위해, Omni 벤치마크는 문서 (Document) ⇒ OCR ⇒ 추출 (Extraction) 과정을 실행합니다. 모델이 페이지를 얼마나 잘 OCR 하고, 그 내용을 LLM이 파싱할 수 있는 형식으로 반환하는지를 측정합니다.
우리는 예측된 JSON 객체와 정답 (Ground Truth) JSON 객체 사이의 차이를 식별하기 위해 수정된 json-diff를 사용합니다. 정확한 구현을 확인하려면 evaluation/json.ts 파일을 검토할 수 있습니다. 정확도는 다음과 같이 계산됩니다:
주요 벤치마크 지표는 JSON 정확도이지만, 추출된 텍스트와 정답 텍스트 사이의 텍스트 유사도를 측정하기 위해 레벤슈타인 거리 (Levenshtein distance)를 포함했습니다. 거리가 낮을수록 유사도가 높음을 나타냅니다. 이 점수 산정 방식은 정답 데이터의 정확한 레이아웃 (Layout)을 따르지 않는 정확한 텍스트에 대해 큰 페널티를 부여한다는 점에 유의하십시오.
아래 예시에서, LLM은 두 텍스트 블록을 아무런 문제 없이 해독할 수 있습니다. 모든 정보는 100% 정확하지만, 헤더 텍스트 (주소, 전화번호 등)의 미세한 재배열은 편집 거리 (Edit distance) 점수에서 큰 차이를 발생시킵니다.
-
저장소 (Repo)를 클론 (Clone)하고 의존성을 설치하세요:
npm install
-
테스트 데이터를 준비하세요
-
로컬 데이터의 경우, 개별 파일을 data 폴더에 추가하세요. - DB에서 가져오려면 .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 추출 (JSON extraction)에 사용할 모델
...
각 모델에 대한 설정은 src/models/ 폴더에서 확인할 수 있습니다.
| 모델 제공자 (Model Provider) | 모델 (Models) | OCR | JSON 추출 (JSON Extraction) | 필수 환경 변수 (Required ENV Variables) |
|---|
| 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 |
| 모델 제공자 (Model Provider) | 모델 (Models) | OCR | JSON 추출 (JSON Extraction) | 필수 환경 변수 (Required ENV Variables) |
|---|
| 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 |
| 모델 제공자 (Model Provider) | 모델 (Models) | OCR | JSON 추출 (JSON Extraction) | 필수 환경 변수 (Required ENV Variables) |
|---|
| 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-document-ai | | ✅ | ❌ | GOOGLE_LOCATION , GOOGLE_PROJECT_ID , GOOGLE_PROCESSOR_ID , GOOGLE_APPLICATION_CREDENTIALS_PATH |
| Unstructured | unstructured | ✅ | ❌ | UNSTRUCTURED_API_KEY |
- LLM은 OCR 및 JSON 추출을 위해 다음 시스템 프롬프트 (system prompts)를 사용하도록 지시됩니다.
- Google Document AI의 경우,
data 폴더에 google_credentials.json을 포함해야 합니다.
벤치마크 대시보드 (benchmark dashboard)를 사용하면 각 테스트 실행 결과를 쉽게 확인할 수 있습니다. 자세한 내용은 대시보드 문서를 참조하세요.
이 프로젝트는 MIT 라이선스 (MIT License) 하에 라이선스가 부여됩니다 - 자세한 내용은 LICENSE 파일을 참조하세요.