OCR 지연 시간 벤치마크
p50/p95, 처리량 및 꼬리 지연 시간(2026)
최종 검토: 2026-08-18 · 실행 등급: 공식 · 자체 벤치마크 · 8개 엔진 × 2개 영수증 데이터셋
이 페이지에서 다루지 않는 내용: 영수증 이외의 문서 유형 — 청구서, 양식, 계약서, 장문 문서는 제외됩니다. 클라우드/API OCR 서비스(AWS, Google, Azure), 미세 조정 모델, 멀티 GPU 서빙, 배치 크기 스윕, 그리고 Tesseract 기준선을 제외한 CPU 전용 배포는 범위를 벗어납니다. 8개 엔진의 전체 정확도 비교는 OCR vs VLM 정확도 비교에서, 동일한 실행의 비용 측면은 페이지 1,000장당 OCR 비용에서 확인할 수 있습니다.
범위 설명: 단일 GPU 등급(RTX 4090)을 한 장소/시점에서 사용 — 자체 하드웨어에서 측정하십시오. 영수증 데이터셋만 해당(SROIE 2019, CORD v2). 안정 상태의 p50/p95는 모델 로딩을 제외하며, 페이지/분은 모델 초기화를 포함한 실측 시간입니다. p95는 이 실행 프로토콜에서 첫 페이지/프리필 효과와 배치 스케줄링 동작을 반영합니다.
동일한 GPU, 동일한 영수증, 동일한 측정 프로토콜에서 8개 오픈소스 엔진의 페이지당 중앙값 OCR 지연 시간은 24.5배 범위로 — SROIE 2019 기준 108.7 ms(docTR)부터 2,668.0 ms(Surya2)까지입니다. 엔진 선택만으로 동일한 하드웨어에서 페이지당 지연 시간이 한 자릿수 이상 달라집니다 — 그리고 중앙값은 대화형 경험을 결정짓는 부분, 즉 꼬리 지연 시간을 숨깁니다.
작성자가 가장 자주 필요로 하는 세 가지 수치: 동일한 테스트 분할에서 가장 빠른 엔진의 p50 108.7 ms 대 가장 느린 엔진의 p50 2,668.0 ms — 그리고 전체 벤치마크에서 가장 나쁜 단일 꼬리 이벤트인 CORD v2에서 Surya2의 p95 26,976.9 ms입니다.
세 가지 측정 기준, 한 페이지: p50, p95, 페이지/분
이 페이지는 동일한 실행에 대한 세 가지 측정 기준을 보고하며, 각각 다른 질문에 답합니다. p50은 warm_then_scored 모드에서의 정상 상태 페이지당 추론 시간입니다 — 고정된 워밍업 패스가 측정 패스보다 먼저 실행되며, 모델 로딩은 제외됩니다 — 따라서 “이미 실행 중인 엔진의 페이지당 속도는 얼마나 빠른가?”라는 질문에 답합니다. p95는 95번째 백분위수의 동일한 측정값입니다: 페이지의 5%는 이 값보다 오래 걸렸습니다. 페이지/분은 모델 초기화를 포함한 벽시계 처리량입니다 — 배치 작업과 청구되는 GPU 시간을 결정하는 수치입니다.
세 가지 측정 기준은 서로 대체할 수 없으며 일치할 것으로 기대되지 않습니다. 정상 상태 p50은 모델 로딩을 제외하고, 벽시계 페이지/분은 이를 포함하며, p95는 p50이 무시하는 첫 페이지/프리필 효과와 배치 스케줄링 동작을 포착합니다. 이 페이지의 모든 차트와 표는 어떤 측정 기준을 보여주는지 명시합니다 — “108.7 ms”와 “449 pages/min”을 docTR에 대한 서로 다른 두 가지 사실로 취급하십시오, 모순이 아니라.
전체에서 사용되는 세 가지 용어: 꼬리 지연 시간은 가장 느린 몇 퍼센트의 페이지의 동작입니다 — 단일 페이지를 기다리는 사용자에게는 중앙값이 아닌 꼬리가 경험을 결정합니다. 첫 페이지/프리필 효과는 안정적인 추론 전에 모델이나 파이프라인을 준비하는 일회성 비용으로, 실행 초기 샘플이 느리게 나타나는 원인입니다. 벽시계 처리량은 초기화를 포함한 실행의 모든 밀리초를 계산합니다. 이 벤치마크의 프로토콜에서 p50/p95는 정상 상태 측정값이고 페이지/분은 벽시계 측정값입니다 — 두 값의 차이는 초기화와 스케줄링 오버헤드입니다.
SROIE 2019: 페이지당 지연 시간 중앙값 순위
영어 영수증 361건을 대상으로 한 측정에서, 전통적인 2단계 OCR 엔진은 빠른 축에, 문서 파싱 VLM은 느린 축에 위치하지만, 각 계열 내부의 편차가 놀라운 결과입니다. docTR(108.7ms)은 다음으로 빠른 전통 엔진(PaddleOCR, 297.0ms)보다 2.7배 빠르며, 가장 느린 두 엔진은 모두 VLM(Unlimited-OCR 1,600.7ms, Surya2 2,668.0ms)입니다. 그러나 가장 빠른 VLM인 PaddleOCR-VL(694.3ms)도 모든 전통 엔진보다 느립니다.
출처: summary_metrics.csv — latency_p50_ms 열, sroie_2019 행. docTR 108.7, PaddleOCR 297.0, EasyOCR 413.6, Tesseract 670.9, PaddleOCR-VL 694.3, Docling 732.0, Unlimited-OCR 1600.7, Surya2 2668.0. 안정 상태 지연 시간, 워밍업 후 점수 측정 모드.
| 순위 | 모델 | 유형 | p50 (ms) | p95 (ms) | p95/p50 | 페이지/분 | 출처 |
|---|---|---|---|---|---|---|---|
| 1 | docTR | 전통적 OCR (GPU) | 108.7 | 281.4 | 2.6× | 449.3 | summary_metrics.csv · doctr/sroie_2019 행 |
| 2 | PaddleOCR | 전통적 OCR (GPU) | 297.0 | 3,331.4 | 11.2× | 79.7 | summary_metrics.csv · paddleocr/sroie_2019 행 |
| 3 | EasyOCR | 전통적 OCR (GPU) | 413.6 | 960.4 | 2.3× | 124.5 | summary_metrics.csv · easyocr/sroie_2019 행 |
| 4 | Tesseract | 전통적 OCR (CPU) | 670.9 | 1,507.0 | 2.2× | 78.6 | summary_metrics.csv · tesseract/sroie_2019 행 |
| 5 | PaddleOCR-VL | 문서 파싱 VLM | 694.3 | 1,154.3 | 1.7× | 68.2 | summary_metrics.csv · paddleocr_vl_vllm/sroie_2019 행 |
| 6 | Docling | 파이프라인 파서 | 732.0 | 3,239.8 | 4.4× | 56.7 | summary_metrics.csv · docling/sroie_2019 행 |
| 7 | Unlimited-OCR | 문서 파싱 VLM | 1,600.7 | 2,521.9 | 1.6× | 34.4 | summary_metrics.csv · unlimited_ocr/sroie_2019 행 |
| 8 | Surya2 | 문서 파싱 VLM | 2,668.0 | 5,872.2 | 2.2× | 12.1 | summary_metrics.csv · surya2/sroie_2019 행 |
표: summary_metrics.csv — latency_p50_ms / latency_p95_ms / pages_per_minute, sroie_2019 행. p95/p50 비율은 CSV 값의 나눗셈으로 계산됨. Tesseract는 CPU 전용으로 실행(compute_type=cpu)되었고, 나머지는 모두 GPU에서 실행됨. 정상 상태 지연 시간은 모델 로딩을 제외하며, 페이지/분은 초기화를 포함한 벽시계 시간 기준.
아키텍처 패턴은 계열 수준에서 명확합니다. 전통적 엔진이 1~4위를 차지하고, VLM이 5, 7, 8위를 차지하며, Docling이 그 중간에 있습니다. 그러나 각 계열 내부의 격차는 큽니다. VLM 클러스터는 3.8배(694.3~2,668.0ms), 전통적 클러스터는 6.2배(108.7~670.9ms) 범위로, "VLM"과 "전통적"이라는 분류는 지연 시간 범주가 아님을 보여줍니다. 개별 엔진의 설계가 계열 소속보다 훨씬 큰 영향을 미칩니다.
p50은 꼬리를 숨긴다: 엔진별 p95/p50 비율
중앙값은 최악의 경우를 예측하는 데 부적합합니다. PaddleOCR의 SROIE p95(3,331.4ms)는 p50(297.0ms)의 11.2배입니다. 중앙값 페이지가 300ms 미만이었음에도 5%의 페이지는 3.3초 이상 걸렸습니다. 대화형 워크로드에서는 이 비율이 p50보다 사용자가 0.3초를 기다릴지 3.3초를 기다릴지를 결정합니다. docTR의 p95(281.4ms)는 p50 대비 2.6배로 안정적으로 유지됩니다.
그 메커니즘은 첫 페이지/프리필 효과입니다. GPU 엔진은 안정적인 추론 전에 일회성 초기화 비용을 지불하며, 배치 스케줄링은 느린 샘플을 직렬화할 수 있습니다. 이는 프로토콜별 동작입니다. 이러한 p95 값은 이 벤치마크의 실행 패턴을 반영하며, 엔진의 보편적 속성이 아닙니다. 데이터가 보여주는 것은 이 프로토콜 하에서 각 엔진 꼬리의 형태입니다. PaddleOCR과 Docling은 SROIE에서 길고 무거운 꼬리를 가지며, docTR, EasyOCR, Unlimited-OCR은 중앙값에 가깝게 유지합니다.
출처: summary_metrics.csv에서 계산 — latency_p95_ms ÷ latency_p50_ms, sroie_2019 행. PaddleOCR 11.2배, Docling 4.4배, docTR 2.6배, EasyOCR 2.3배, Tesseract 2.2배, Surya2 2.2배, PaddleOCR-VL 1.7배, Unlimited-OCR 1.6배.
이 비율이 말하지 않는 것을 주목하세요: p95/p50 비율이 낮다고 해서 속도가 빠른 것은 아닙니다. Unlimited-OCR은 벤치마크에서 가장 낮은 꼬리 비율을 보이지만, p50(1,600.7ms)과 p95(2,521.9ms) 모두 docTR의 p95(281.4ms)보다 훨씬 느립니다. 이 비율은 분포의 위치가 아니라 형태를 측정합니다. 두 숫자를 함께 읽어야 합니다. 느린 중앙값 주변의 낮은 꼬리 비율은 여전히 느린 것입니다.
처리량은 다른 이야기를 한다: 페이지/분 vs p50
분당 페이지 수로 엔진을 순위 매기면 순서가 달라진다. docTR의 449.3페이지/분과 Surya2의 12.1은 37배 차이로, p50의 24.5배 차이보다 더 크다. 그러나 p95 꼬리가 11.2배인 PaddleOCR도 여전히 79.7페이지/분을 유지한다: EasyOCR의 124.5에 근접하고, PaddleOCR-VL의 68.2와 Docling의 56.7보다 앞선다. 느린 중앙값과 무거운 꼬리가 상당한 일괄 처리량을 막지는 못한다.
그 차이는 측정 기준에서 비롯된다: 페이지/분은 모델 초기화와 스케줄링을 포함한 벽시계 처리량인 반면, p50은 로드를 제외한 정상 상태의 단일 페이지 추론이다. 아래 표는 페이지/분을 그에 해당하는 페이지당 평균 벽시계 시간으로 변환하고 p50과의 격차를 보여준다. PaddleOCR의 페이지당 암시적 벽시계 시간(752.7ms)은 정상 상태 p50(297.0ms)의 2.5배이고, Surya2의 경우(4,940.0ms)는 p50(2,668.0ms)의 1.9배이다. 초기화, 스케줄링, 호출별 파이프라인 비용과 같은 오버헤드는 p50만으로는 보이지 않으며, 이것이 낮은 p50이 자동으로 높은 처리량을 의미하지 않는 이유이다.
| 모델 (SROIE) | p50 (ms) | 페이지/분 | 실측 ms/페이지 | p50 대비 오버헤드 | 출처 |
|---|---|---|---|---|---|
| docTR | 108.7 | 449.3 | 133.5 | 1.2× | summary_metrics.csv · doctr/sroie_2019 행 |
| EasyOCR | 413.6 | 124.5 | 481.8 | 1.2× | summary_metrics.csv · easyocr/sroie_2019 행 |
| PaddleOCR | 297.0 | 79.7 | 752.7 | 2.5× | summary_metrics.csv · paddleocr/sroie_2019 행 |
| Tesseract | 670.9 | 78.6 | 763.0 | 1.1× | summary_metrics.csv · tesseract/sroie_2019 행 |
| PaddleOCR-VL | 694.3 | 68.2 | 880.3 | 1.3× | summary_metrics.csv · paddleocr_vl_vllm/sroie_2019 행 |
| Docling | 732.0 | 56.7 | 1,059.1 | 1.4× | summary_metrics.csv · docling/sroie_2019 행 |
| Unlimited-OCR | 1,600.7 | 34.4 | 1,742.5 | 1.1× | summary_metrics.csv · unlimited_ocr/sroie_2019 행 |
| Surya2 | 2,668.0 | 12.1 | 4,940.0 | 1.9× | summary_metrics.csv · surya2/sroie_2019 행 |
표: summary_metrics.csv — latency_p50_ms / pages_per_minute, sroie_2019 행. 실측 ms/페이지는 파생 추정치입니다 — 측정된 처리량에 대한 산술 계산이며, 별도로 측정된 수치가 아닙니다. 오버헤드 = 파생 실측 ÷ 측정된 p50. 페이지/분은 모델 초기화를 포함한 실측 기준이며, p50은 로드를 제외한 정상 상태 기준입니다.
양극단에 대한 두 번째 검증 참고 사항: 유일한 CPU 엔진인 Tesseract는 SROIE에서 78.6페이지/분을 유지합니다 — GPU에서의 PaddleOCR의 79.7과 사실상 동일합니다 — p50(670.9ms, CPU)과 실측(763.0ms)이 거의 동일한데, 이는 단일 스레드 CPU 엔진은 숨길 초기화 오버헤드가 거의 없기 때문입니다. p95(1,507.0ms)는 p50의 2.2×로 — 벤치마크에서 가장 좁은 꼬리 중 하나입니다. CPU 대 GPU 처리량 동등성에 대한 자세한 분석은 Tesseract vs PaddleOCR에서 다룹니다.
대화형 vs 배치: 1,000ms 임계값 해석
단일 페이지를 기다리는 사용자에게 1,000ms는 유용한 경계입니다. 반응이 빠르다고 느껴지는 한계에 가깝기 때문입니다. p50 기준으로 읽으면, 8개 엔진 중 6개가 이 기준 미만입니다: docTR(108.7ms), PaddleOCR(297.0ms), EasyOCR(413.6ms), Tesseract(670.9ms, CPU), PaddleOCR-VL(694.3ms), Docling(732.0ms). 중앙값 기준으로 이 기준을 넘는 엔진은 Unlimited-OCR(1,600.7ms)과 Surya2(2,668.0ms)뿐입니다.
p95 기준으로 읽으면 상황이 역전됩니다. 1초 미만을 유지하는 엔진은 단 두 개뿐입니다 — docTR(281.4ms)과 EasyOCR(960.4ms). 나머지 모든 엔진의 꼬리 부분은 이 기준을 넘습니다: PaddleOCR 3,331.4ms, Docling 3,239.8ms, Unlimited-OCR 2,521.9ms, Tesseract 1,507.0ms, PaddleOCR-VL 1,154.3ms, Surya2 5,872.2ms. "대화형"이 최악의 경우에도 반응성이 느껴져야 함을 의미한다면, 선택 기준은 중앙값이 아니라 꼬리 부분이며, 자격을 갖춘 엔진은 단 두 개뿐입니다.
배치 처리는 또 다른 영역이며, 엔진에 유리하게 경제성을 바꿉니다. 모델 초기화는 프로세스/배치당 한 번만 지불되므로, 순차 또는 배치 처리는 초기화 비용을 더 많은 페이지에 분산시킵니다 — 페이지당 지연 시간과 페이지당 비용은 모두 배치 크기가 커짐에 따라 감소합니다. 이는 측정 기준에서 파생된 주장이며, 새로운 벤치마크 실행이 아닙니다 — 동일한 추론과 계산 과정은 비용 페이지의 방법론에 나와 있습니다.
중앙값 기준 대화형 가능
- docTR — 108.7ms p50 / 281.4ms p95
- PaddleOCR — 297.0ms p50 / 3,331.4ms p95
- EasyOCR — 413.6ms p50 / 960.4ms p95
- Tesseract(CPU) — 670.9ms p50 / 1,507.0ms p95
- PaddleOCR-VL — 694.3ms p50 / 1,154.3ms p95
- Docling — 732.0ms p50 / 3,239.8ms p95
SROIE 2019 기준 p50이 1,000ms 미만. 중앙값은 빠르게 느껴지지만 꼬리 부분은 편차가 큽니다.
꼬리 부분 기준 대화형 가능
- docTR — 281.4ms p95
- EasyOCR — 960.4ms p95
SROIE 2019 기준 p95가 1,000ms 미만. 최악의 경우를 1초 미만으로 유지하는 엔진은 이 두 개뿐입니다.
영수증 기준 배치 전용
- Unlimited-OCR — 1,600.7ms p50 / 2,521.9ms p95
- Surya2 — 2,668.0ms p50 / 5,872.2ms p95
- 대량 처리 시 모든 엔진 — 초기화 비용 분산
SROIE 기준 p50이 1,000ms 초과. 배치 또는 순차 처리는 초기화 비용을 분산합니다.
CORD(인도네시아 영수증): 동일한 결과, 다른 꼬리
문서 세트를 바꾸면 순위는 대체로 유지됩니다 — docTR이 가장 빠르고 Surya2가 가장 느립니다 — 그러나 언어 변화는 꼬리 분포를 재구성합니다. CORD v2에서 Surya2의 p95는 26,976.9 ms로 폭증하며, 이는 자체 p50(1,485.3 ms) 대비 18.2×에 달하고 벤치마크의 극단적 꼬리 사건이 됩니다 — 반면 SROIE에서의 꼬리 비율은 2.2×에 불과했습니다. 언어 콘텐츠는 꼬리 동작을 변화시킵니다. 영어 영수증에서 안정적인 VLM도 인도네시아 영수증에서는 30초 대기로 치솟을 수 있습니다.
CORD v2는 중첩 필드가 있는 인도네시아어 데이터세트입니다. 8개 엔진 중 어느 것도 주로 인도네시아어로 훈련되지 않았으므로, 이는 교차 언어 스트레스 테스트 역할을 겸합니다. 해당 영수증은 SROIE보다 짧고 텍스트 밀도가 낮아 대부분의 엔진이 여기서 더 빨라집니다 — docTR은 p50 100.4 ms, PaddleOCR은 p50 108.2 ms로 떨어집니다. CORD는 이 벤치마크에서 SROIE 순위와 의도적으로 분리되어 유지됩니다. 이 표의 요점은 지연 시간이 문서 세트에 따라 변하며 꼬리가 극적으로 변할 수 있다는 것입니다.
출처: summary_metrics.csv — latency_p50_ms 열, cord_v2 행. docTR 100.4, PaddleOCR 108.2, EasyOCR 192.8, PaddleOCR-VL 249.3, Docling 338.0, Tesseract 474.6, Unlimited-OCR 608.2, Surya2 1485.3. 안정 상태 지연 시간, 웜-후-스코어링.
| 순위 | 모델 | 유형 | p50 (ms) | p95 (ms) | p95/p50 | 페이지/분 | 출처 |
|---|---|---|---|---|---|---|---|
| 1 | docTR | 기존 OCR (GPU) | 100.4 | 235.9 | 2.3× | 500.4 | summary_metrics.csv · doctr/cord_v2 행 |
| 2 | PaddleOCR | 기존 OCR (GPU) | 108.2 | 2,228.3 | 20.6× | 141.0 | summary_metrics.csv · paddleocr/cord_v2 행 |
| 3 | EasyOCR | 기존 OCR (GPU) | 192.8 | 599.9 | 3.1× | 211.8 | summary_metrics.csv · easyocr/cord_v2 행 |
| 4 | PaddleOCR-VL | 문서 파싱 VLM | 249.3 | 1,190.9 | 4.8× | 67.1 | summary_metrics.csv · paddleocr_vl_vllm/cord_v2 행 |
| 5 | Docling | 파이프라인 파서 | 338.0 | 1,333.2 | 3.9× | 123.2 | summary_metrics.csv · docling/cord_v2 행 |
| 6 | Tesseract | 기존 OCR (CPU) | 474.6 | 1,011.3 | 2.1× | 108.9 | summary_metrics.csv · tesseract/cord_v2 행 |
| 7 | Unlimited-OCR | 문서 파싱 VLM | 608.2 | 1,486.8 | 2.4× | 74.0 | summary_metrics.csv · unlimited_ocr/cord_v2 행 |
| 8 | Surya2 | 문서 파싱 VLM | 1,485.3 | 26,976.9 | 18.2× | 11.2 | summary_metrics.csv · surya2/cord_v2 행 |
표: summary_metrics.csv — latency_p50_ms / latency_p95_ms / pages_per_minute, cord_v2 행. p95/p50 비율은 CSV 값의 나눗셈으로 계산. Tesseract는 CPU 전용으로 실행. 정상 상태 지연 시간은 모델 로딩을 제외하며, 페이지/분은 초기화를 포함한 실측 시간 기준.
Surya2의 CORD p95 26,976.9ms는 이번 벤치마크에서 가장 큰 단일 꼬리 지연 사건입니다 — 20페이지 중 1페이지는 중앙값이 1.5초인 데이터셋에서 약 27초가 걸렸습니다. 참고로 이는 docTR의 CORD p95(235.9ms)의 114배입니다. SROIE에서 거의 동일했던 두 엔진은 CORD에서 크게 갈라집니다 — 꼬리 동작은 엔진 단독의 속성이 아니라 엔진 × 문서 조합의 속성임을 상기시켜 줍니다.
지연 시간과 비용은 같은 시계로 움직입니다
대여 GPU는 벽시계 시간으로 청구되므로 지연 시간과 비용은 같은 측정값을 두 번 보는 것입니다: docTR은 가장 빠른 엔진(108.7ms p50)이면서 가장 저렴합니다. Surya2는 가장 느리면서(2,668.0ms p50) 가장 비쌉니다(1.0609) — 같은 분할, 같은 비율. 무거운 VLM은 느리고 비싸며, 가벼운 전통 엔진은 빠르고 저렴합니다.
상관관계는 정확하지 않습니다. 비용은 초기화를 포함하는 벽시계 페이지/분을 따르는 반면 p50은 이를 제외하기 때문입니다 — PaddleOCR의 p50(297.0ms)은 EasyOCR(413.6ms)보다 빠르지만, PaddleOCR의 1,000페이지당 비용(0.2214)은 벽시계 처리량이 훨씬 낮아 EasyOCR(0.1098)의 약 두 배입니다. 전체 비용 순위, 비용 공식, 그리고 그 뒤의 산술은 형제 페이지인 OCR 1,000페이지당 비용에 있으며 — 이 페이지는 지연 시간에 초점을 맞추고 상관관계만 빌려옵니다.
자주 묻는 질문
페이지당 가장 빠른 OCR 엔진은 무엇인가요?
docTR이 이번 벤치마크에서 가장 빨랐습니다: SROIE 2019에서 페이지당 108.7ms p50 및 281.4ms p95로 449.3페이지/분을 유지했습니다. 가장 느리게 측정된 Surya2는 p50에서 24.5배(2,668.0ms), 처리량에서 37배 느렸습니다.
GPU에서 페이지당 일반적인 OCR 지연 시간은 얼마인가요?
RTX 4090, SROIE 2019 영수증 기준 8개 오픈소스 엔진의 페이지당 p50은 108.7 ms(docTR)에서 2,668.0 ms(Surya2) 사이입니다. 동일한 하드웨어에서 24.5배 차이가 납니다. 안정 상태, 워밍업 후 측정, 모델 로딩 제외 기준입니다. 동일한 엔진을 CORD v2에 적용하면 p50이 100.4~1,485.3 ms 범위입니다.
OCR p95 지연 시간이 p50보다 훨씬 높은 이유는 무엇인가요?
첫 페이지/프리필 효과와 배치 스케줄링 동작 때문입니다. GPU 엔진은 일회성 초기화 비용을 지불하며 느린 샘플은 직렬화될 수 있으므로, 95번째 백분위수 정의상 가장 느린 5%의 페이지는 중앙값에서 멀리 떨어져 있습니다. PaddleOCR의 SROIE p95(3,331.4 ms)는 p50(297.0 ms)의 11.2배입니다. docTR의 p95(281.4 ms)는 p50의 2.6배에 불과합니다. p95 값은 프로토콜별로 다르며, 이는 이 벤치마크의 실행 패턴을 반영하는 것이지 보편적인 엔진 속성이 아닙니다.
OCR 지연 시간과 분당 페이지 수가 일치하지 않는 이유는 무엇인가요?
서로 다른 측정 항목이기 때문입니다. 분당 페이지 수는 모델 초기화 및 스케줄링을 포함한 벽시계 처리량이고, p50은 모델 로딩을 제외한 안정 상태의 페이지당 추론 시간입니다. SROIE에서 PaddleOCR의 p50(297.0 ms)은 순수 안정 상태 기준 약 200페이지/분을 의미하지만, 측정된 처리량은 79.7페이지/분이며, 이는 페이지당 파생 벽시계 시간 752.7 ms로 p50의 2.5배입니다. 배치 작업의 경우 분당 페이지 수를 기준으로 계획하고, 대화형 대기의 경우 p50과 p95를 기준으로 계획하세요.
대화형 사용에 적합한 OCR 지연 시간은 얼마인가요?
꼬리 부분이 1,000 ms 미만이면 실용적인 기준입니다. SROIE에서 8개 엔진 중 6개가 p50 기준 1초 미만을 유지하지만(docTR 108.7, PaddleOCR 297.0, EasyOCR 413.6, Tesseract 670.9, PaddleOCR-VL 694.3, Docling 732.0 ms), p95 기준 1초 미만을 유지하는 엔진은 docTR(281.4 ms)과 EasyOCR(960.4 ms)뿐입니다. 최악의 경우에도 반응성이 중요하다면 p95가 기준이 되고, 일반적인 경우만 충분하다면 p50이 기준이 됩니다.
한 OCR 엔진이 영수증 하나에 27초가 걸린 이유는 무엇인가요?
Surya2의 CORD v2 p95는 26,976.9 ms로, 자체 p50(1,485.3 ms)의 18.2배이며 벤치마크에서 가장 큰 꼬리 이벤트입니다. SROIE에서의 꼬리는 2.2배로 완만했으므로, 이 급증은 엔진 × CORD 조합에 특화된 현상입니다. 언어 콘텐츠와 스케줄링이 중앙값뿐 아니라 꼬리 동작까지 바꾼 것입니다.
Tesseract OCR은 GPU 없이도 충분히 빠른가요?
CPU에서 Tesseract는 SROIE 2019 기준 분당 78.6페이지를 유지했으며 p50은 670.9 ms였습니다. GPU 기반 전통 엔진보다 느리지만, 처리량에서는 세 VLM 모두보다 빨랐습니다. 꼬리도 완만했습니다. 이 벤치마크에서 Tesseract는 CPU 전용입니다. "충분히 빠른지"는 처리량과 텍스트가 아닌 필드가 필요한지에 따라 달라집니다. Tesseract vs PaddleOCR의 CPU 비용 프로필을 참조하세요.
페이지를 많이 처리할수록 OCR이 페이지당 더 빨라지나요?
네, 정상 상태 하한선까지 그렇습니다. 이는 새로운 실행이 아닌 측정 기준의 파생 효과입니다. 모델 초기화는 프로세스/배치당 한 번만 비용으로 발생합니다. 따라서 배치 또는 순차 처리가 이를 상각합니다. 처리량이 많을수록 페이지당 실제 소요 시간은 정상 상태 p50에 스케줄링을 더한 값에 수렴합니다. docTR의 SROIE 수치는 이미 이 하한선에 가깝습니다. Surya2(2,668.0 대 4,940.0 ms)는 상각할 초기화 오버헤드가 더 많음을 보여줍니다.
이 페이지의 지연 시간 수치는 어디서 왔나요?
모든 수치는 1차 벤치마크가 공개한 results/summary_metrics.csv의 행입니다(latency_p50_ms, latency_p95_ms, pages_per_minute). 이 파일은 ImageToTableai/benchmark-ocr에 호스팅되어 있으며, 각 실행마다 측정 모드(warm_then_scored), 모델 버전, 환경 지문을 기록한 manifest.json이 하나씩 포함되어 있습니다. 데이터셋 정의는 아래에 인용된 SROIE 2019 및 CORD 논문에서 가져왔습니다.
방법론 및 출처
프로토콜
이 페이지는 독립적이고 재현 가능한 벤치마크 실행의 지연 시간 차원을 보고합니다. 제3자 주장에 대한 조사가 아닙니다. 고정 테스트 분할만 사용했습니다: SROIE 2019 테스트 및 CORD v2 테스트; 학습 분할은 평가하지 않았습니다. 모든 쌍은 동일한 이미지, 동일한 정답, 동일한 측정 프로토콜을 사용했습니다. 16개 실행 모두 error_rate 0.0으로 완료되었습니다. 데이터는 2026년 8월에 수집되었습니다.
런타임 환경
- 하드웨어: 모든 GPU 실행은 단일 NVIDIA RTX 4090(24 GB)에서 수행되었습니다. Tesseract는 CPU 전용(compute_type=cpu)으로 실행되었으며 모든 표에 그렇게 표시되어 있습니다. GPU 티어 1개, 위치/시간 1개 — 이 페이지의 범위 설명입니다.
- 엔진: 모든 모델은 파인튜닝 없이 기본 설정 그대로 실행되었습니다. 버전은 실행 매니페스트에 따라 고정되었습니다: Tesseract 5.3.4, PaddleOCR 3.7.0, EasyOCR 1.7.2, docTR v1.0.1, Docling 2.119.0, Surya2 0.22.1, Unlimited-OCR vLLM 서빙, PaddleOCR-VL 1.6.
- 측정 모드:
warm_then_scored— 지연 시간 수치는 모델 로딩을 제외한 정상 상태의 페이지당 추론 시간입니다. 페이지/분은 모델 초기화를 포함한 벽시계 시간 기준입니다. - 실행 티어: 16개 실행 모두
official입니다. 벤치마크 프로토콜(reports/receipt_v1_official_protocol.md)에 따라 공식 실행만 게시 자격이 있습니다.
지표 정의
- p50: 안정 상태에서 페이지당 추론 시간의 중앙값 — 50%의 페이지가 이보다 빨랐습니다. 모델 로딩은 제외됩니다.
- p95(꼬리 지연 시간): 페이지당 추론 시간의 95번째 백분위수 — 5%의 페이지가 이보다 오래 걸렸습니다. 이 실행 프로토콜에서 첫 페이지/프리필 효과와 배치 스케줄링 동작을 반영합니다. 프로토콜별 수치이며, 보편적인 엔진 상수가 아닙니다.
- p95/p50 비율: 두 CSV 열을 나누어 계산합니다. 꼬리 분포의 형태를 나타내는 지표이지, 속도 주장이 아닙니다.
- 페이지/분: 모델 초기화를 포함한 실측 처리량입니다. 배치 작업 및 과금 관점의 수치입니다.
- 실측 ms/페이지: 60,000 ÷ 페이지/분 — 측정된 처리량에 대한 산술 계산으로, 측정값이 아닌 파생 추정치로 표시됩니다.
출처 목록
- summary_metrics.csv (GitHub raw). 16개 행 = 8개 엔진 × 2개 영수증 데이터셋(sroie_2019, cord_v2). 열에는 latency_p50_ms, latency_p95_ms, pages_per_minute, compute_type, error_rate가 포함됩니다. 이 페이지의 모든 지연 시간 및 처리량 수치는 여기의 행에서 비롯됩니다.
- ImageToTableai/benchmark-ocr 저장소. 결과 CSV, 편집된 실행 매니페스트, 고정 프로토콜(
reports/receipt_v1_official_protocol.md), 재현을 위한 데이터셋 샘플 목록을 호스팅하는 공개 저장소입니다. - results/manifests/ (GitHub). 게시된 각 실행에 대한 편집된 manifest.json 1개씩 있으며, 환경 지문, 모델 버전, 측정 모드(
warm_then_scored), 실측 시간, 아티팩트 해시가 포함됩니다. - 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).
제한 사항
- 단일 GPU 티어, 단일 위치/시간: 모든 GPU 수치는 2026년 8월에 한 사이트의 RTX 4090 하나에서 수집되었습니다. 다른 GPU, 다중 GPU 서빙, 그리고 다른 스케줄링은 지연 시간과 처리량을 변화시킵니다. 도입 전에 자체 하드웨어에서 측정하십시오.
- 영수증만 해당: SROIE 및 CORD 영수증. 인보이스, 양식, 계약서 또는 긴 문서의 지연 시간은 측정되지 않았습니다. 위 순위는 영수증 외에는 일반화할 수 없으며, CORD의 결과는 SROIE 순위에 병합되지 않습니다.
- p95는 프로토콜별 수치: p95 값은 이 벤치마크의 실행 패턴에서 첫 페이지/프리필 효과와 배치 스케줄링을 반영합니다. 이는 이번 실행의 형태적 판독값이지, 보편적인 최악의 경우 보장이 아닙니다.
- p50/p95는 모델 로딩을 제외하고, 페이지/분은 포함: 두 기준은 의도적으로 다릅니다 그리고 결코 동일한 숫자로 제시되지 않습니다. 파생된 페이지당 벽시계 시간은 측정된 처리량에 대한 산술 계산이지, 별도로 측정된 수치가 아닙니다.
- CPU/GPU 비대칭성: Tesseract(CPU)는 GPU 가속 엔진과 비교됩니다. 그 지연 시간은 CPU 하드웨어를 반영합니다. 모든 표에 표시되어 있지만 비대칭성은 비교에 내재되어 있습니다.
- 클라우드/API 모델 없음: AWS Textract, Google Document AI, Azure AI Document Intelligence 및 호스팅 OCR/VLM API는 포함되지 않습니다. 이들의 지연 시간 모델은 여기서 측정된 로컬 엔진과 근본적으로 다릅니다.
- 배치 크기 스윕 없음: 초기화 상각은 측정 기준에서 파생되고 비용 페이지의 방법과 상호 참조됩니다. 배치 크기 실험은 실행되지 않았으므로 배치별 확장은 측정이 아닌 추정치입니다.
- 표본 크기 및 버전 고정: 361 + 100개 표본; 결과는 위에 나열된 2026년 8월 모델 버전에 적용됩니다. 최신 엔진 릴리스는 지연 시간을 변경할 수 있습니다. 한 자릿수 백분율 차이는 노이즈로 처리해야 합니다.
관련 참고 자료: 1,000페이지당 OCR 비용 · 문서 파싱 VLM 대비 OCR 파이프라인 · docTR vs Surya2: CER 동률, 비용 격차 · docTR vs Docling: 단일 패스 대 파이프라인 · Tesseract vs PaddleOCR: 레거시 CPU 대 최신 GPU
관련 자료: AI OCR 정확도가 실제로 측정하는 것 · 이미지의 AI 추출 대 기존 OCR 파이프라인 · AI 문서 추출 가격(2026)