기존 OCR vs 문서 파싱 VLM
영수증 벤치마크 결과 (2026)
최종 검토: 2026-08-18 · 실행 티어: 공식 · 자체 벤치마크 · 8개 모델 × 2개 영수증 데이터셋
이 페이지에서 다루지 않는 내용: 영수증 이외의 모든 문서 유형 — 인보이스, 양식, 계약서, 장문 문서는 제외됩니다. 클라우드/API OCR 서비스, 파인튜닝된 문서 AI 모델, 표/수식/레이아웃 정확도, CER/WER 이외의 전체 텍스트 지표는 범위에 포함되지 않습니다. 결과는 영수증 OCR 정확도 및 문서 유형별 정확도 변화에 대한 제3자 영수증 및 문서 유형 정확도 집계로 추가 맥락이 제공됩니다.
이 페이지의 모든 수치 범위: 영수증. 이러한 결과를 인보이스, 표 또는 복잡한 레이아웃에 적용하지 마십시오 — 벤치마크는 영수증 OCR 및 필드 추출만 측정합니다. 모든 수치는 벤치마크의 results/summary_metrics.csv 및 results/field_method_comparison.csv에서 비롯되며, 공개 GitHub 저장소에 미러링되어 행 단위로 인용됩니다.
문서 파싱 VLM은 영수증에서 기존 OCR보다 본질적으로 더 우수하지 않습니다. 원시 문자 정확도(SROIE 2019)에서 최고 VLM(Surya2, CER 0.191)과 최고 기존 엔진(docTR, CER 0.197)은 통계적으로 동률이며, 기존 PaddleOCR이 0.204로 3위입니다. VLM의 명확한 장점 — 레이아웃, 표, 수식, 장문 문서 — 은 단일 페이지 영어 영수증에서는 나타나지 않습니다. 영수증에서 두 계열을 구분하는 것은 운영 범위입니다. 기존 엔진은 비용과 실행 부담이 훨씬 적으며, LLM 후처리 단계를 거치면 8개 엔진 중 6개가 0.57–0.62 필드 F1 대역으로 수렴합니다.
핵심을 한 쌍의 숫자로 요약하면: docTR은 동일한 RTX 4090, 동일한 영수증, 동일한 테스트 분할에서 페이지당 109 ms p50 및 1,000페이지당 $0.048을 처리하는 반면, Surya2는 2,668 ms p50 및 1,000페이지당 $1.061이 소요됩니다 — 24.5배의 레이턴시 격차와 22배의 비용 격차입니다. 어떤 계열이 "이기는지"는 전적으로 어느 축에 주목하느냐에 달려 있습니다. 이 페이지의 목적은 동일한 통제된 실행에서 두 축을 모두 보여주는 것입니다.
SROIE 모델별 문자 정확도
출처: summary_metrics.csv — cer 열, sroie_2019 행. Surya2 0.1915, docTR 0.1971, PaddleOCR 0.2045, EasyOCR 0.2833, Tesseract 0.3347, PaddleOCR-VL 0.3370, Docling 0.5909, Unlimited-OCR 0.6552. 낮을수록 좋음. Tesseract는 CPU 전용.
| 모델 | 계열 | CER | WER | 출처 |
|---|---|---|---|---|
| Surya2 | 문서 파싱 VLM | 0.191 | 0.274 | summary_metrics.csv · surya2/sroie_2019 행 |
| docTR | 기존 OCR | 0.197 | 0.320 | summary_metrics.csv · doctr/sroie_2019 행 |
| PaddleOCR | 기존 OCR | 0.204 | 0.326 | summary_metrics.csv · paddleocr/sroie_2019 행 |
| EasyOCR | 기존 OCR | 0.283 | 0.616 | summary_metrics.csv · easyocr/sroie_2019 행 |
| Tesseract | 기존 OCR (CPU) | 0.335 | 0.559 | summary_metrics.csv · tesseract/sroie_2019 행 |
| PaddleOCR-VL | 문서 파싱 VLM | 0.337 | 0.646 | summary_metrics.csv · paddleocr_vl_vllm/sroie_2019 행 |
| Docling | 파이프라인 파서 | 0.591 | 0.760 | summary_metrics.csv · docling/sroie_2019 행 |
| Unlimited-OCR | 문서 파싱 VLM | 0.655 | 0.478 | summary_metrics.csv · unlimited_ocr/sroie_2019 행 |
표: summary_metrics.csv — cer 및 wer 열, sroie_2019 행, 모델당 361개 샘플. CER = 문자 오류율, WER = 단어 오류율; 낮을수록 좋음. 정확한 값: Surya2 cer 0.19147 / wer 0.27352; docTR cer 0.19707 / wer 0.31990.
단어 오류율(WER)도 다른 세분화로 같은 이야기를 전한다. 문자 단위가 아닌 단어 단위 오류를 측정한다. Surya2가 WER 0.274로 선두이고, docTR이 0.320으로 뒤를 따른다. 맨 아래의 이상치에 주목하자. Unlimited-OCR은 CER이 가장 나쁘지만(0.655) WER은 중간 수준(0.478)이다. 이 모델의 출력은 대소문자와 형식이 크게 정규화되어 있으며, 단어가 대체로 온전해도 문자 수준 편집이 늘어난다.
Docling은 비교에 등장하기 전에 분류상의 주의가 필요합니다. Docling은 순수 전통 OCR 엔진도, VLM도 아닙니다. Docling은 파이프라인 파서입니다. 즉, OCR 코어를 중심으로 레이아웃 분석, 표 감지, 읽기 순서 재구성을 실행하는 단계적 도구 체인입니다. 일반 영수증에서는 이러한 파이프라인 오버헤드가 얻는 이점이 거의 없으며, 이것이 SROIE에서 원시 CER(0.591)이 단일 패스 엔진에 뒤처지는 이유 중 하나입니다.
비용 및 지연 시간: 전통 엔진의 장점
문자 정확도가 두 계열 사이에서 아무것도 결정하지 못한다면, 비용과 지연 시간이 거의 모든 것을 결정합니다. 동일한 테스트 분할에서 docTR은 449페이지/분의 처리량, 페이지당 108.7ms p50의 지연 시간, 1,000페이지당 $0.048의 비용을 유지합니다. 반면 Surya2는 12페이지/분의 처리량, 2,668ms p50의 지연 시간, 1,000페이지당 $1.061의 비용을 기록합니다. 이는 대략 37배의 처리량, 24.5배의 페이지당 지연 시간, 22배의 1,000페이지당 비용 차이입니다.
비용은 벽시계 실행 시간 × RunPod RTX 4090 요금으로 계산됩니다. 이는 모델 초기화를 포함하여 GPU 시간에 대해 실제로 지불하게 될 가격입니다. Tesseract는 특별한 경우입니다: CPU 전용으로 GPU 비용이 전혀 없으며, 그럼에도 SROIE에서 78.6페이지/분을 처리합니다. CSV에서 비용 셀이 비어 있는 것은 무료이기 때문이 아니라 청구 가능한 GPU 시간을 소비하지 않기 때문입니다.
출처: summary_metrics.csv — latency_p50_ms 열, sroie_2019 행. docTR 108.7, PaddleOCR 297.0, EasyOCR 413.6, Tesseract 670.9(CPU), PaddleOCR-VL 694.3, Docling 732.0, Unlimited-OCR 1600.7, Surya2 2668.0. 안정 상태 지연 시간, 웜-후-스코어링 측정 모드.
출처: summary_metrics.csv — cost_per_1000_pages 열, sroie_2019 행. docTR 0.0479, EasyOCR 0.1098, PaddleOCR-VL 0.2048, PaddleOCR 0.2214, Unlimited-OCR 0.3879, Docling 0.3978, Surya2 1.0609. Tesseract CPU 전용: CSV에서 셀 비어 있음; 비용에는 모델 초기화가 포함되며, 순수 안정 상태 처리량이 아님.
| 모델 | 계열 | 레이턴시 p50 (ms) | 레이턴시 p95 (ms) | 페이지/분 | 1K 페이지당 비용 | 출처 |
|---|---|---|---|---|---|---|
| docTR | 기존 OCR | 108.7 | 281.4 | 449.3 | $0.048 | summary_metrics.csv · doctr/sroie_2019 행 |
| PaddleOCR | 기존 OCR | 297.0 | 3,331.4 | 79.7 | $0.221 | summary_metrics.csv · paddleocr/sroie_2019 행 |
| EasyOCR | 기존 OCR | 413.6 | 960.4 | 124.5 | $0.110 | summary_metrics.csv · easyocr/sroie_2019 행 |
| Tesseract | 기존 OCR (CPU) | 670.9 | 1,507.0 | 78.6 | n/a (CPU) | summary_metrics.csv · tesseract/sroie_2019 행 |
| PaddleOCR-VL | 문서 파싱 VLM | 694.3 | 1,154.3 | 68.2 | $0.205 | summary_metrics.csv · paddleocr_vl_vllm/sroie_2019 행 |
| Docling | 파이프라인 파서 | 732.0 | 3,239.8 | 56.7 | $0.398 | summary_metrics.csv · docling/sroie_2019 행 |
| Unlimited-OCR | 문서 파싱 VLM | 1,600.7 | 2,521.9 | 34.4 | $0.388 | summary_metrics.csv · unlimited_ocr/sroie_2019 행 |
| Surya2 | 문서 파싱 VLM | 2,668.0 | 5,872.2 | 12.1 | $1.061 | summary_metrics.csv · surya2/sroie_2019 행 |
표: summary_metrics.csv — latency_p50_ms / latency_p95_ms / pages_per_minute / cost_per_1000_pages, sroie_2019 행. GPU 실행은 RTX 4090; Tesseract는 CPU 전용 실행. 처리량은 모델 초기화를 포함한 벽시계 기준 페이지/분.
꼬리 레이턴시 열은 중앙값뿐 아니라 최악의 경우 동작이 중요할 때 의미가 있습니다. PaddleOCR의 p95 3,331 ms와 Docling의 3,240 ms는 p50 값과 큰 차이를 보입니다 — 첫 페이지 효과와 프리필 스파이크가 GPU 엔진의 꼬리를 지배합니다 — 반면 docTR의 p95 (281 ms)는 안정적으로 유지됩니다. 대화형 워크로드의 경우, 이 p95 차이는 0.3초 대기와 3초 이상 대기의 차이입니다.
CORD: 언어 불일치와 정답 데이터 부풀림
CORD v2는 중첩 필드가 있는 인도네시아어 영수증 데이터셋입니다. 8개 엔진 중 어느 것도 인도네시아어 영수증을 주로 학습하지 않았으므로, CORD는 교차 언어 스트레스 테스트 역할을 하며 — 모든 엔진의 CER이 0.90–1.08로 떨어집니다. 이 수치는 CORD의 정답 텍스트에 주석 구조가 포함되어 있어 모든 엔진의 원시 CER을 부풀린다는 점을 감안하고 읽어야 합니다. CORD 결과는 SROIE 순위와 엄격히 분리하여 유지되며, 단일 리더보드로 통합할 수 없습니다.
두 가지 서로 다른 요인이 CORD CER을 1.0에 가깝게 만듭니다. 그중 하나는 언어 자체입니다. 첫째, 언어: 영어로 학습된 엔진은 인도네시아어 단어를 실제로 잘못 읽습니다 — 인도네시아어 이름, 도로명 주소, 통화 형식(Rp)은 학습 분포 밖에 있습니다. 둘째, 정답 데이터: CORD의 공개 텍스트 주석은 순수한 가시 텍스트가 아닌 주석 구조를 포함하므로, 원시 CER은 구조적으로 확장된 문자열에 대한 편집 거리를 측정합니다. 가장 깨끗한 VLM 예시가 가장 큰 불이익을 받습니다 — CER 1.080의 PaddleOCR-VL은 텍스트 품질 판단이 아닌, 그 메커니즘의 극단적 산물입니다.
따라서 CORD에서 공정한 교차 계열 비교는 CER이 아닌 필드 지표입니다. CER 열이 여전히 유용하게 보여주는 점은 언어 불일치가 아키텍처 전반에 걸쳐 실제하고 보편적이라는 것입니다 — 전통적 방식과 VLM을 포함한 모든 계열이 구조적 우위 없이 동일한 0.90–1.08 대역에 위치합니다.
| 모델 | 계열 | CORD CER | 출처 |
|---|---|---|---|
| Surya2 | 문서 파싱 VLM | 0.896 | summary_metrics.csv · surya2/cord_v2 행 |
| PaddleOCR | 기존 OCR | 0.908 | summary_metrics.csv · paddleocr/cord_v2 행 |
| docTR | 기존 OCR | 0.910 | summary_metrics.csv · doctr/cord_v2 행 |
| EasyOCR | 기존 OCR | 0.918 | summary_metrics.csv · easyocr/cord_v2 행 |
| Docling | 파이프라인 파서 | 0.922 | summary_metrics.csv · docling/cord_v2 행 |
| Unlimited-OCR | 문서 파싱 VLM | 0.922 | summary_metrics.csv · unlimited_ocr/cord_v2 행 |
| Tesseract | 기존 OCR (CPU) | 0.952 | summary_metrics.csv · tesseract/cord_v2 행 |
| PaddleOCR-VL | 문서 파싱 VLM | 1.080 | summary_metrics.csv · paddleocr_vl_vllm/cord_v2 행 |
표: summary_metrics.csv — cer 열, cord_v2 행, 각 100개 샘플. 이 수치를 SROIE와 통합 순위로 비교하지 마세요: CORD CER은 실제 언어 불일치와 정답 데이터의 주석 구조 과대평가가 결합된 값입니다. 1.0을 초과하는 CER(PaddleOCR-VL 1.0805)은 과대평가된 정답 데이터로 인한 편집 거리 아티팩트입니다.
필드 F1: LLM 후처리가 필드 격차를 좁히다
문자 정확도는 엔진을 평가하지만, 실제 사용자가 비용을 지불하는 것은 필드 추출입니다. 이 벤치마크는 각 엔진의 OCR 텍스트에서 두 가지 후처리기 — 고정 regex 패턴과 구조화된 프롬프트를 사용하는 LLM(deepseek-v4-flash) — 을 사용하여 네 가지 영수증 필드를 추출합니다. 결과: LLM은 SROIE에서 엔진 간 격차를 거의 없애, 8개 엔진 중 6개를 0.57–0.62 필드 F1 대역으로 끌어올렸습니다 — 반면 regex 결과는 0.26포인트 범위에 분산되어 있었습니다.
필드 값 F1은 추출된 필드 값에 대한 정밀도와 재현율의 조화 평균이며, 정답과 대조하여 점수를 매깁니다 — 1.0은 모든 필드 값이 완벽하게 추출되었음을, 0은 아무것도 복구되지 않았음을 의미합니다. regex 열은 데이터셋별로 하나의 고정 패턴 세트를 사용하고, LLM 열은 결정적 출력을 위해 temperature 0의 deepseek-v4-flash를 사용합니다. 두 지표는 서로 다른 파이프라인을 측정하며 절대 혼합되지 않습니다.
출처: field_method_comparison.csv — regex_field_value_f1 / llm_field_value_f1 열, sroie_2019 행. LLM 후처리기: deepseek-v4-flash. 엔진당 361개 샘플(llm_ok_count).
| 모델 | 계열 | regex 필드 F1 (SROIE) | LLM 필드 F1 (SROIE) | 출처 |
|---|---|---|---|---|
| docTR | 기존 OCR | 0.077 | 0.617 | field_method_comparison.csv · doctr/sroie_2019 행 |
| Surya2 | 문서 파싱 VLM | 0.318 | 0.614 | field_method_comparison.csv · surya2/sroie_2019 행 |
| Unlimited-OCR | 문서 파싱 VLM | 0.338 | 0.605 | field_method_comparison.csv · unlimited_ocr/sroie_2019 행 |
| PaddleOCR-VL | 문서 파싱 VLM | 0.337 | 0.592 | field_method_comparison.csv · paddleocr_vl_vllm/sroie_2019 행 |
| PaddleOCR | 기존 OCR | 0.325 | 0.581 | field_method_comparison.csv · paddleocr/sroie_2019 행 |
| Docling | 파이프라인 파서 | 0.224 | 0.569 | field_method_comparison.csv · docling/sroie_2019 행 |
| Tesseract | 기존 OCR (CPU) | 0.233 | 0.439 | field_method_comparison.csv · tesseract/sroie_2019 행 |
| EasyOCR | 기존 OCR | 0.148 | 0.372 | field_method_comparison.csv · easyocr/sroie_2019 행 |
표: field_method_comparison.csv — regex_field_value_f1 / llm_field_value_f1, sroie_2019 행. LLM = deepseek-v4-flash 후처리. docTR regex 0.0766 → LLM 0.6171 (8.1× 향상); 나머지 6개 엔진은 0.5685–0.6171 범위.
이 표에는 직관에 반하는 두 가지 결과가 담겨 있습니다. 첫째, docTR은 SROIE에서 regex 필드 F1이 가장 낮지만(0.077) LLM 필드 F1은 가장 높습니다(0.617) — regex가 필드의 7.7%만 추출한 동일한 깨끗한 OCR 텍스트가 LLM에서는 61.7%를 산출했습니다. 병목은 OCR이 아니라 후처리기였습니다. 둘째, 0.57–0.62 범위를 벗어나는 두 엔진은 정확히 OCR 기반이 저하된 두 엔진입니다: EasyOCR(0.372, SROIE CER 0.283)과 Tesseract — Tesseract의 CORD 결과는 LLM이 근본적으로 읽을 수 없는 텍스트에서는 필드를 추출할 수 없음을 보여줍니다(CORD CER 0.9523). 모든 후처리기의 상한선은 그 아래에 있는 OCR 기반 품질입니다.
CORD에서 LLM은 언어 충격의 일부도 흡수합니다. 정상 엔진(PaddleOCR 0.553, docTR 0.550, PaddleOCR-VL 0.520, Surya2 0.520)의 LLM 필드 F1은 0.47–0.55을 유지하지만, regex는 거의 0에 가깝게 붕괴합니다(docTR 0.0, EasyOCR 0.7%) — 패턴이 영어 형식용으로 작성되었고, "언어 하나 더"의 패널티는 거의 전적으로 규칙이 부담하지 LLM이 부담하지 않습니다.
CER이 문서 파싱 VLM을 과소평가하는 이유
CER은 VLM 출력과 정답을 문자 단위로 비교하며, VLM은 인식 오류가 아닌 두 가지 정당한 동작, 즉 대소문자 변환과 라벨/값 병합으로 인해 불이익을 받습니다. SROIE에 대한 벤치마크의 CER 분해는 VLM CER의 약 18%를 대소문자 형식 차이로, 약 10%를 줄 병합 또는 구분선 누락으로 돌리며, 필드 값 자체는 실제로 정확합니다.
설계상의 긴장은 실제적이고 구조적입니다. 기존 OCR 엔진은 대소문자가 유지된 원시 텍스트를 출력하므로 설계상 CER 점수에 최적화되어 있습니다. 문서 파싱 VLM은 "이해된" 텍스트를 출력하는데, 이는 다운스트림 시스템이 원하는 것에 더 가깝지만 정확한 문자 일치와는 더 멀어집니다. 이것이 이 페이지의 헤드라인이 동일한 유형의 출력 간 공정한 비교가 가능한 경우에만 CER을 사용하고, 공정한 교차 계열 비교가 필드 메트릭에 있는 이유이며, CORD CER이 자체 섹션으로 격리된 이유이기도 합니다. 더 넓은 요점은 계열 간 CER 격차가 자동으로 정확도 격차는 아니다는 것이며, 계열 간 모델을 비교하는 사람은 한 계열이 "더 잘 읽는다"고 결론 내리기 전에 CER이 무엇을 측정하는지 확인해야 합니다.
선택 방법: 워크로드에 중요한 축은 무엇인가
워크로드 없이 "더 낫다"는 의미가 없습니다. 벤치마크의 정직한 결론은 두 계열이 서로 다른 축에서 승리하며, 수치 데이터는 전통적인 엔진이 승리하는 축과 후처리가 필드 품질을 결정하는 축을 구체적으로 측정한다는 것입니다.
- 파이프라인이 소비하는 것이 무엇인지 결정하세요: 원시 텍스트 또는 필드. 사람이 텍스트를 읽는다면, CER/WER이 정직한 지표이며 — 전통적인 엔진이 승리하거나 동률입니다. 다운스트림 시스템이 필드를 소비한다면, 후처리기가 엔진보다 더 많은 것을 결정합니다: regex 사용 시 필드 F1은 0.077–0.338 범위, LLM 사용 시 6개 엔진이 0.569–0.617 범위에 들어갑니다.
- 볼륨이 높고 비용이 실질적이라면, 전통적인 고속 경로를 중심으로 설계하세요. docTR은 1,000페이지당 $0.048의 비용으로 분당 449페이지를 처리했습니다(summary_metrics.csv doctr/sroie_2019: pages_per_minute 449.3, cost_per_1000_pages 0.0479). Tesseract는 GPU 비용 없이 분당 78.6페이지를 처리합니다. Surya2의 1,000페이지당 $1.061 비용을 기준으로 한 VLM 기반 영수증 처리 라인은 동일한 하드웨어에서 페이지당 약 22배 더 비쌉니다.
- 필드가 바이트보다 중요하다면, 엔진을 바꾸는 대신 LLM 후처리를 추가하세요. 벤치마크에서 가장 큰 단일 개선은 docTR의 SROIE 필드 F1이었습니다 — 0.077(regex)에서 0.617(deepseek-v4-flash)로, 동일한 OCR 텍스트에서 8.1배 향상. LLM 호출은 문서당 중앙값 약 1.8–2.4초를 추가합니다 — 동기식 페이지별 사용자 대기보다는 비동기 일괄 처리에 적합합니다.
- OCR이 설정하는 한계를 예산에 반영하세요. EasyOCR과 Tesseract는 기본 텍스트가 약하기 때문에 LLM 수렴 대역 밖에 있습니다. CORD에서의 Tesseract는 어떤 후처리기도 읽을 수 없는 텍스트를 고칠 수 없다는 확실한 증거입니다.
- 확정 전에 자체 문서로 검증하세요. 이 수치는 하나의 GPU 계층(RTX 4090), 두 개의 영수증 데이터셋, 2026년 8월 모델 버전에서 나온 것입니다. 모든 아키텍처 결정은 자체 코퍼스로 재실행해야 합니다 — 이 페이지를 생성한 아티팩트 세트는 바로 그 목적을 위해 존재합니다.
선택 가이드는 인용된 CSV 행에서 직접 파생되었습니다. 데이터 기반 독자 보조 자료이며, 특정 업체를 지지하는 것이 아닙니다. 정확한 결과는 하드웨어, 문서 구성, 모델 버전에 따라 달라집니다.
자주 묻는 질문
문서 파싱 VLM이 기존 OCR보다 영수증 인식 정확도가 더 높나요?
원시 문자 정확도 기준으로는 아닙니다 — 최고 성능의 VLM과 최고 성능의 기존 엔진은 SROIE 2019에서 통계적으로 동률이며, PaddleOCR(0.204)이 3위입니다. 필드 추출이 목표라면 VLM 여부와 관계없이 LLM 후처리가 결정적 요소입니다.
문서 파싱 VLM보다 기존 OCR이 더 적합한 경우는 언제인가요?
처리량이 많고 비용이 과금되며 레이턴시가 대화형 수준이어야 할 때입니다. SROIE에서 docTR은 분당 449페이지를 처리했으며 1,000페이지당 $0.048, p50 108.7 ms였습니다. Surya2는 분당 12페이지를 처리했으며 1,000페이지당 $1.061, p50 2,668 ms였습니다. 페이지당 대화형 대기 시간 기준으로 차이는 0.1초 대 2.7초입니다.
문서 파싱 VLM이 저가 OCR보다 CER에서 더 나쁜 점수를 받는 이유는 무엇인가요?
CER은 정확한 문자 일치를 기준으로 하기 때문이며, VLM은 대소문자 변환과 라벨/값 병합에서 불이익을 받는데 이는 출력 규칙이지 오인식이 아닙니다. SROIE에 대한 벤치마크의 CER 분해 분석에 따르면 VLM CER의 약 18%는 대소문자 형식 차이, ~10%는 줄 병합/구분자 누락에 기인하며 — 필드 값 자체는 대개 정확합니다. CORD CER은 또한 정답 데이터 내부의 주석 구조로 인해 추가로 부풀려지며, 이 때문에 이 페이지는 CORD CER을 순위 산정에서 제외하고 교차 계열 비교에는 필드 지표를 사용합니다.
RTX 4090에서 영수증 OCR 페이지당 비용은 얼마인가요?
RTX 4090에서 시간당 $0.76 기준, 1,000페이지당 $0.048(docTR)에서 $1.061(Surya2) 사이이며, 가격은 실행 매니페스트에 타임스탬프된 2026년 8월 기준입니다. Tesseract는 CPU 전용이라 GPU 시간을 소비하지 않습니다. 비용에는 모델 초기화가 포함되므로 배치 크기가 커질수록 페이지당 비용은 낮아집니다.
CORD 영수증에서 모든 모델이 CER 0.90 이상을 기록하는 이유는 무엇인가요?
두 가지 원인이 겹칩니다: 실제 언어 불일치와 CORD의 정답 텍스트 내 주석 구조 부풀림입니다. 어느 계열도 피해 가지 않습니다 — 8개 모델 모두 0.90~1.08 구간에 분포합니다. CORD는 언어/레이아웃 견고성 스트레스 테스트 세트로, SROIE 순위와는 별도로 유지됩니다.
LLM이 잘못된 OCR 출력을 그냥 고쳐주지 않나요?
기본 텍스트 품질 수준까지만 가능합니다. SROIE에서 LLM은 엔진과 무관하게 6개 엔진을 0.57~0.62 필드 F1 구간으로 끌어올렸지만(field_method_comparison.csv), Tesseract의 CORD 사례가 한계를 보여줍니다: CER 0.9523에서 LLM 필드 F1은 0.163 — LLM은 읽을 수 없는 텍스트에서 필드를 추출할 수 없습니다.
영수증에 가장 빠른 OCR은 무엇인가요?
이 벤치마크에서는 docTR입니다: SROIE 2019에서 페이지당 108.7 ms p50, 분당 449페이지. 테스트한 모델 중 가장 느린 Surya2는 p50에서 24.5배 느렸고(2,668 ms), 처리량은 37배 느렸습니다.
이 페이지의 수치는 어디서 왔나요?
모든 수치는 자체 벤치마크의 공개 CSV 행입니다 — results/summary_metrics.csv 및 results/field_method_comparison.csv — ImageToTableai/benchmark-ocr에서 호스팅되며, 환경 지문용으로 실행마다 편집된 manifest.json 하나가 포함됩니다. 데이터셋 정의는 아래 인용된 SROIE 2019 및 CORD 논문에서 비롯됩니다.
방법론 및 출처
프로토콜
이 페이지는 독립적이고 재현 가능한 벤치마크 실행의 문서 파싱 비교 결과를 보고합니다. 타사 주장에 대한 설문 조사가 아닙니다. 고정 테스트 분할만 사용했습니다: SROIE 2019 테스트 및 CORD v2 테스트. 학습 분할은 평가하지 않았습니다. 모든 쌍은 동일한 이미지, 동일한 ground truth, 동일한 측정 프로토콜을 사용합니다. 총 16개 실행이 모두 error_rate 0.0으로 완료되었습니다.
런타임 환경
- 하드웨어: 모든 GPU 실행은 NVIDIA RTX 4090(24GB)에서 수행. GPU 비용은 RunPod 온디맨드 요금 $0.76/시간 기준으로 계산했으며, 가격 타임스탬프는 각 실행의 편집된 매니페스트에 기록되어 있습니다. Tesseract는 CPU 전용으로 실행되었으며 GPU 비용이 없습니다.
- 엔진: 모든 모델은 파인튜닝 없이 기본 설정으로 실행. 버전은 실행 매니페스트에 따라 고정되었습니다.
- LLM 후처리기: deepseek-v4-flash API, 온도 0으로 결정적 출력 생성. 모든 LLM 필드 행에 사용된 단일 모델입니다.
- 비용 기준: 벽시계 실행 시간 × $0.76/시간, 모델 초기화 포함 — 배치 처리는 페이지당 비용을 낮춥니다.
- 필드 후처리: SROIE 필드 메트릭은
postprocessed_sroie_receipt_regex_*/ LLM 변형입니다. 즉, 고정 정규식 세트 또는 LLM이 OCR 텍스트에서 추출한 필드입니다. 이는 모델의 네이티브 구조화 출력이 아닌 OCR + 다운스트림 추출을 측정합니다.
| 모델 | 버전 | 유형 / 백엔드 |
|---|---|---|
| Tesseract | 5.3.4 | 기존 OCR — CPU |
| PaddleOCR | 3.7.0 | 기존 OCR — GPU |
| EasyOCR | 1.7.2 | 기존 OCR — GPU |
| docTR | v1.0.1 | 기존 OCR — GPU |
| Docling | 2.119.0 | 파이프라인 파서 — GPU |
| Surya2 | 0.22.1 | 문서 파싱 VLM — vLLM 서빙 |
| Unlimited-OCR | vLLM 서빙 | 문서 파싱 VLM — vLLM 서빙 |
| PaddleOCR-VL | 1.6 | 문서 파싱 VLM — vLLM 서빙 |
버전은 벤치마크 모델 테이블(README.md) 및 실행별 편집된 매니페스트에 기록된 대로입니다. 각 매니페스트는 실행 ID, 모델 버전, 러너 스크립트 해시, GPU/드라이버, torch/CUDA/Python 버전, pip-freeze 해시, 가격 타임스탬프가 포함된 비용 메타데이터, 재현성을 위한 아티팩트 해시를 기록합니다.
지표 정의
- CER: OCR 텍스트와 정답 간의 편집 거리를 정답 문자 수로 나눈 값입니다. 낮을수록 좋으며, 대소문자 및 형식 규칙에 민감합니다.
- WER: 단어 단위로 계산하는 동일한 편집 거리 방식입니다.
- 필드 값 F1(regex): OCR 텍스트에 고정 regex 패턴을 적용해 추출한 필드 값의 정밀도/재현율 조화 평균입니다. 열 이름: regex_field_value_f1.
- 필드 값 F1(LLM): LLM 후처리기 출력에 대한 동일 지표입니다. 열 이름: llm_field_value_f1. 두 파이프라인은 서로 다르며 절대 혼합되지 않습니다.
- 레이턴시 p50/p95 및 페이지/분: 안정 상태의 페이지당 추론 시간과 모델 초기화를 포함한 실제 소요 처리량입니다.
- 1,000페이지당 비용: 기록된 $0.76/시간 요율 기준 1,000페이지 처리에 청구된 GPU 시간입니다. CPU 전용 Tesseract는 비어 있습니다.
출처 목록
- summary_metrics.csv (GitHub raw). 16개 행 = 8개 모델 × 2개 데이터셋. 열: model, compute_type, dataset, cer, wer, field_f1_regex, field_acc_regex, latency_p50_ms, latency_p95_ms, cost_per_1000_pages, pages_per_minute, error_rate. 이 페이지의 모든 CER/WER, 레이턴시, 비용, 처리량 수치는 여기의 행에서 비롯됩니다.
- field_method_comparison.csv (GitHub raw). 16개 행; 열은 model, dataset, llm_model (= deepseek-v4-flash), regex/llm 필드 값 정확도 및 F1, document-fields-exact, llm_median_latency_ms, 토큰 수. 모든 regex/LLM 필드 F1 수치는 여기의 행에서 비롯됩니다.
- ImageToTableai/benchmark-ocr 저장소. 결과 CSV, 편집된 실행 매니페스트, 고정 프로토콜, 재현을 위한 데이터셋 샘플 목록을 호스팅하는 공개 저장소입니다.
- results/manifests/ (GitHub). 게시된 각 실행에 대한 편집된 manifest.json 1개로, 환경 지문, 모델 버전, 비용 메타데이터, 아티팩트 해시를 포함합니다.
- Huang et al., "ICDAR2019 Competition on Scanned Receipt OCR and Information Extraction" (2019). SROIE 2019 데이터셋 정의, 작업 구조, 라이선스(CC-BY-4.0).
- Park et al., "CORD: A Consolidated Receipt Dataset for Post-OCR Parsing" (2020). CORD v2 데이터셋 정의, 중첩 필드 스키마, 라이선스(CC-BY-4.0).
한계점
- 문서 범위: 영수증만 포함합니다(SROIE + CORD). 이 벤치마크는 레이아웃/표/수식 처리, 장문 문서, 비영수증 필드는 측정하지 않습니다. 문서 파싱 VLM이 가장 큰 장점을 주장하는 문서 유형은 여기서 측정되지 않았습니다. 이 페이지를 "기존 OCR이 모든 면에서 더 낫다"는 결론으로 사용하지 마세요.
- 표본 크기: 영어 영수증 361개 + 인도네시아어 영수증 100개. 필드 F1과 CER은 코퍼스에 민감하며, 소수점 이하 몇 hundredths 수준의 차이는 노이즈로 간주해야지 엔지니어링 사실로 보면 안 됩니다.
- 단일 GPU 티어: 모든 GPU 수치는 시간당 $0.76인 RTX 4090 하나에서 나온 것입니다. 다른 GPU, 멀티 GPU 서빙, 배치 스케줄링은 레이턴시, 처리량, 비용을 바꿉니다.
- CPU/GPU 비대칭: Tesseract(CPU)는 GPU 가속 엔진과 비교됩니다. 레이턴시/시간은 CPU 하드웨어를 반영하고, 비용 이점은 GPU 과금이 없다는 점을 반영합니다. 관련 표마다 표시되어 있지만, 비대칭성은 비교 자체에 내재된 것입니다.
- LLM 후처리기는 단일 모델: 모든 LLM 필드 행은 deepseek-v4-flash를 사용합니다. 다른 LLM을 쓰면 절대 F1이 달라질 수 있으며, 수렴 순서도 경계에서 바뀔 수 있습니다. LLM 레이턴시는 API에서 발생하며 OCR 엔진 자체 레이턴시에 포함되지 않습니다.
- 비용 타임스탬프: 시간당 $0.76 GPU 가격은 2026년 8월 실행 매니페스트에 기록된 것입니다. GPU 스팟/온디맨드 가격은 변하므로, 예산을 세우기 전에 현재 요금으로 비용을 다시 산출하세요.
- CORD CER은 품질 측정이 아닙니다: CORD 정답 데이터에는 주석 구조가 포함되어 있고, 엔진은 인도네시아어로 학습되지 않았습니다. CORD CER은 언어 불일치 + 정답 데이터 부풀림을 반영하며, 모델별 판독 품질을 반영하지 않습니다. CORD 행은 의도적으로 어떤 SROIE 순위에도 병합되지 않았습니다.
- Regex 튜닝: regex 패턴 세트는 데이터셋마다 한 번 작성되었습니다. 공급업체별로 과도하게 튜닝된 패턴 라이브러리는 자체 형식에서 더 높은 점수를 받을 수 있습니다. 다만 유지보수 비용은 LLM이 없애줍니다.
- 클라우드/API 모델 없음: AWS Textract, Google Document AI, Azure AI Document Intelligence, 호스팅 VLM API는 포함되지 않았습니다. 이들의 레이턴시와 가격 모델은 여기서 측정한 로컬 엔진과 근본적으로 다릅니다.
- 버전 고정: 결과는 위에 나열된 2026년 8월 모델 버전에 한해 유효합니다. 어떤 엔진의 최신 릴리스라도 결과가 바뀔 수 있고, 큰 p95 스파이크가 있는 두 측정값(PaddleOCR, Docling)의 p50 레이턴시는 이 실행의 배치 패턴에서 프리필/첫 페이지 효과를 반영합니다.
관련 참고 자료: 필드 추출에서 regex의 한계 · 필드 수준 및 문자 수준 정확도 비교 · 영수증 OCR 정확도 · 문서 유형별 OCR 정확도 데이터
관련 읽을거리: AI OCR vs 기존 OCR 정확도 · AI 비전 추출이 OCR과 다르게 이미지를 읽는 방법 · AI 문서 추출 가격(2026)