OCR 지연 벤치마크p50/p95, 처리량 및 꼬리 스파이크 (2026)

마지막 검토: 2026-08-18 · 실행 등급: 공식 · 1차 벤치마크 · 8개 엔진 × 2개 영수증 데이터셋

이 페이지의 범위: 8개 오픈소스 OCR/문서 파싱 엔진 — Tesseract, PaddleOCR, EasyOCR, docTR, Docling, Surya2, Unlimited-OCR, PaddleOCR-VL —의 페이지별 지연 시간을 동일한 NVIDIA RTX 4090에서 동일한 고정 테스트 분할인 SROIE 2019CORD v2에 대해 측정한 1차, 재현 가능한 벤치마크입니다. 각 엔진에 대해 보고되는 항목: 중앙값 지연(p50), 꼬리 지연(p95), p95/p50 비율, 그리고 벽시계 처리량입니다. 모든 수치는 공개 OCR 벤치마크 저장소(ImageToTableai/benchmark-ocr)에 게시된 CSV 행에서 추적 가능합니다 — 제3자 보고서의 집계가 아닌 재현 가능한 실험 데이터입니다.
이 페이지의 범위 외: 영수증 이외의 모든 문서 유형 — 청구서, 양식, 계약서 또는 긴 문서는 포함되지 않습니다. 클라우드/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)까지. 엔진 선택만으로 동일한 하드웨어에서 페이지별 지연이 한 자릿수 이상 변하며 — 중앙값은 상호작용 경험을 결정하는 꼬리 부분을 숨깁니다.

작가들이 가장 자주 필요로 하는 세 가지 수치: 측정된 가장 빠른 엔진의 108.7 ms p50 대 가장 느린 엔진의 2,668.0 ms p50 — 그리고 CORD v2에서의 Surya2의 26,976.9 ms p95, 전체 벤치마크에서 가장 나쁜 단일 꼬리 이벤트입니다.

108.7 ms
측정된 가장 빠른 페이지당 중앙값 지연 시간: docTR on SROIE 2019, RTX 4090, 안정 상태 워밍 후 점수 산출
24.5×
SROIE에서 가장 빠르고 가장 느린 엔진 간의 p50 지연 시간 차이 (108.7 ms vs 2,668.0 ms) — 동일한 머신, 동일한 영수증, 동일한 프로토콜
26,976.9 ms
CORD v2에서의 Surya2의 p95 — ~27초, 벤치마크의 극단적 꼬리 이벤트, 자체 p50의 18.2배

세 가지 측정값, 하나의 페이지: p50, p95, 및 페이지/분

이 페이지는 동일한 실행에 대한 세 가지 측정값을 보고하며, 각각 다른 질문에 답합니다. p50warm_then_scored 모드에서의 안정 상태 페이지당 추론 시간입니다 — 점수를 매기는 패스 앞에 고정된 워밍업 패스가 선행되며, 모델 로딩은 제외됩니다 — 따라서 "이 엔진이 이미 실행 중일 때 페이지당 얼마나 빠른가?"라는 질문에 답합니다. p95는 95번째 백분위수에서의 동일한 측정값입니다: 페이지의 5%가 이 시간보다 더 오래 걸렸습니다. 페이지/분은 모델 초기화를 포함한 벽시계 처리량입니다 — 배치 작업과 과금 GPU 시간을 결정하는 수치입니다.

세 가지 측정값은 상호 교환 가능하지 않으며, 일치할 것으로 예상되지 않습니다. 안정 상태 p50은 모델 로딩을 제외합니다; 벽시계 페이지/분은 이를 포함합니다; p95는 p50이 무시하는 첫 페이지/프리필 효과와 배치 스케줄링 동작을 포착합니다. 이 페이지의 모든 차트와 테이블은 어떤 측정값을 나타내는지 명시합니다 — "108.7 ms"와 "449 페이지/분"을 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)도 모든 전통 엔진보다 느립니다.

SROIE 2019의 페이지당 중앙값 지연 시간(p50, ms): 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 — 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페이지/분출처
1docTRTraditional OCR (GPU)108.7281.42.6×449.3summary_metrics.csv · doctr/sroie_2019 행
2PaddleOCRTraditional OCR (GPU)297.03,331.411.2×79.7summary_metrics.csv · paddleocr/sroie_2019 행
3EasyOCRTraditional OCR (GPU)413.6960.42.3×124.5summary_metrics.csv · easyocr/sroie_2019 행
4TesseractTraditional OCR (CPU)670.91,507.02.2×78.6summary_metrics.csv · tesseract/sroie_2019 행
5PaddleOCR-VLDocument-parsing VLM694.31,154.31.7×68.2summary_metrics.csv · paddleocr_vl_vllm/sroie_2019 행
6DoclingPipeline parser732.03,239.84.4×56.7summary_metrics.csv · docling/sroie_2019 행
7Unlimited-OCRDocument-parsing VLM1,600.72,521.91.6×34.4summary_metrics.csv · unlimited_ocr/sroie_2019 행
8Surya2Document-parsing VLM2,668.05,872.22.2×12.1summary_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.0 ms)를, 전통 클러스터는 6.2×(108.7~670.9 ms)를 아우르는데, 이는 “VLM”과 “전통”이 지연 시간 범주가 아니라는 것을 의미합니다 — 개별 엔진 설계가 패밀리 소속보다 훨씬 더 큰 영향을 미칩니다.

p50은 꼬리를 숨긴다: 엔진별 p95/p50 비율

중앙값은 최악의 경우를 예측하는 데 좋지 않습니다. PaddleOCR의 SROIE p95(3,331.4 ms)는 p50(297.0 ms)의 11.2×입니다 — 중앙값 페이지가 300ms 미만이었음에도 5%의 페이지는 3.3초 이상 걸렸습니다. 대화형 워크로드의 경우 이 비율이 p50 대신 사용자가 0.3초를 기다릴지 3.3초를 기다릴지를 결정합니다. docTR의 p95(281.4 ms)는 p50의 2.6×으로 타이트하게 유지됩니다.

그 메커니즘은 첫 페이지/프리필 효과입니다: GPU 엔진은 안정적인 추론 전에 일회성 프라이밍 비용을 지불하고, 배치 스케줄링이 느린 샘플을 직렬화할 수 있습니다. 이는 프로토콜별 동작입니다 — 이 p95 값은 엔진의 보편적 특성이 아닌 이 벤치마크의 실행 패턴을 반영합니다. 데이터가 보여주는 것은 이 프로토콜 하에서 각 엔진의 꼬리 형태입니다: PaddleOCR과 Docling은 SROIE에서 길고 무거운 꼬리를 가지며, docTR, EasyOCR, Unlimited-OCR은 중앙값에 가깝게 유지합니다.

SROIE 2019 엔진별 p95/p50 꼬리 비율: 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×. CSV latency_p95_ms / latency_p50_ms로 계산됨.

출처: 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은 벤치마크에서 가장 타이트한 꼬리(1.6×)를 가지고 있지만 — p50(1,600.7 ms)과 p95(2,521.9 ms) 모두 docTR의 p95(281.4 ms)보다 훨씬 느립니다. 이 비율은 분포의 위치가 아닌 형태를 측정합니다. 두 수치를 함께 읽으세요: 느린 중앙값 주변의 타이트한 꼬리는 여전히 느립니다.

처리량은 다른 이야기를 합니다: 페이지/분 vs p50

엔진을 페이지/분으로 순위를 매기면 순서가 바뀝니다. docTR의 449.3 페이지/분 대 Surya2의 12.137배 차이로, 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/페이지오버헤드 vs p50출처
docTR108.7449.3133.51.2×summary_metrics.csv · doctr/sroie_2019 행
EasyOCR413.6124.5481.81.2×summary_metrics.csv · easyocr/sroie_2019 행
PaddleOCR297.079.7752.72.5×summary_metrics.csv · paddleocr/sroie_2019 행
Tesseract670.978.6763.01.1×summary_metrics.csv · tesseract/sroie_2019 행
PaddleOCR-VL694.368.2880.31.3×summary_metrics.csv · paddleocr_vl_vllm/sroie_2019 행
Docling732.056.71,059.11.4×summary_metrics.csv · docling/sroie_2019 행
Unlimited-OCR1,600.734.41,742.51.1×summary_metrics.csv · unlimited_ocr/sroie_2019 행
Surya22,668.012.14,940.01.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.9 ms, CPU)과 실시간 (763.0 ms)이 거의 동일한데, 이는 단일 스레드 CPU 엔진은 숨길 초기화 오버헤드가 거의 없기 때문입니다. p95 (1,507.0 ms)는 p50의 2.2×로, 벤치마크에서 가장 좁은 꼬리 중 하나입니다. CPU 대비 GPU 처리량 동등성은 Tesseract vs PaddleOCR에서 자세히 분석됩니다.

Interactive vs Batch: 1,000ms 임계값 해석

단일 페이지를 기다리는 사용자에게 1,000ms는 유용한 경계선입니다 — 반응성으로 느껴지는 경계에 해당합니다. p50 기준으로, 여덟 엔진 중 여섯 개가 이를 유지합니다: 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). 다른 모든 엔진의 꼬리(tail)는 이를 초과합니다: 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. 만약 “인터랙티브”가 최악의 경우에도 반응성으로 느껴져야 한다면, 선택 기준은 중앙값이 아닌 꼬리(tail)가 되며, 두 엔진만이 자격을 갖춥니다.

일괄 처리는 다른 영역이며, 엔진들에게 유리하게 경제성을 변화시킵니다. 모델 초기화는 프로세스/배치당 한 번만 지불되므로, 순차적 또는 배치 처리는 초기화 비용을 더 많은 페이지에 분산합니다 — 배치 크기가 커짐에 따라 페이지당 지연 시간과 페이지당 비용 모두 떨어집니다. 이는 측정 기준에서 도출된 논증이지 새로운 벤치마크 실행이 아닙니다 — 동일한 논리와 그에 따른 산술은 비용 페이지의 방법에 나와 있습니다.

중앙값 기준 인터랙티브 가능

  • 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 미만. 중앙값은 빠르게 느껴지지만, 꼬리(tail)는 크게 다릅니다.

꼬리(tail) 기준 인터랙티브 가능

  • 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은 108.2 ms p50이 됩니다. CORD는 이 벤치마크에서 SROIE 순위와 의도적으로 분리되어 있습니다. 이 표의 핵심은 지연 시간이 문서 세트에 따라 변하고 꼬리 분포는 극적으로 변할 수 있다는 점입니다.

CORD v2에서의 페이지당 중간 지연 시간(p50, ms): docTR 100.4, PaddleOCR 108.2, EasyOCR 192.8, PaddleOCR-VL 249.3, Docling 338.0, Tesseract 474.6 (CPU), Unlimited-OCR 608.2, Surya2 1485.3. 정상 상태, 워밍 후 점수 측정.

출처: 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페이지/분출처
1docTRTraditional OCR (GPU)100.4235.92.3×500.4summary_metrics.csv · doctr/cord_v2 행
2PaddleOCRTraditional OCR (GPU)108.22,228.320.6×141.0summary_metrics.csv · paddleocr/cord_v2 행
3EasyOCRTraditional OCR (GPU)192.8599.93.1×211.8summary_metrics.csv · easyocr/cord_v2 행
4PaddleOCR-VLDocument-parsing VLM249.31,190.94.8×67.1summary_metrics.csv · paddleocr_vl_vllm/cord_v2 행
5DoclingPipeline parser338.01,333.23.9×123.2summary_metrics.csv · docling/cord_v2 행
6TesseractTraditional OCR (CPU)474.61,011.32.1×108.9summary_metrics.csv · tesseract/cord_v2 행
7Unlimited-OCRDocument-parsing VLM608.21,486.82.4×74.0summary_metrics.csv · unlimited_ocr/cord_v2 행
8Surya2Document-parsing VLM1,485.326,976.918.2×11.2summary_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.9 ms는 벤치마크에서 가장 큰 단일 꼬리 이벤트입니다 — 중앙값이 1.5초인 데이터셋에서 20페이지 중 1페이지가 약 27초가 걸렸습니다. 참고로, 이는 docTR의 CORD p95(235.9 ms)의 114배에 해당합니다. SROIE에서 거의 동일했던 두 엔진이 CORD에서는 크게 차이가 납니다 — 이는 꼬리 동작이 엔진 자체의 속성이 아니라 엔진과 문서의 조합에 따른 속성임을 상기시켜 줍니다.

지연 시간과 비용은 같은 시계로 측정됩니다

대여된 GPU는 벽시계 시간 단위로 과금되므로, 지연 시간과 비용은 같은 측정치를 두 번 보는 것과 같습니다: docTR은 가장 빠른 엔진(108.7 ms p50)이자 가장 저렴한 엔진이고, Surya2는 가장 느린 엔진(2,668.0 ms p50)이자 가장 비싼 엔진(1.0609)입니다 — 동일한 분리, 동일한 비율입니다. 무거운 VLM은 느리고 비싼 반면, 가벼운 기존 엔진은 빠르고 저렴합니다.

상관관계는 정확하지 않습니다. 비용은 초기화 시간을 포함한 벽시계 기준 페이지/분을 따르는 반면, p50은 이를 제외하기 때문입니다 — PaddleOCR의 p50(297.0 ms)이 EasyOCR(413.6 ms)보다 빠르지만, PaddleOCR의 1,000페이지당 비용(0.2214)은 벽시계 처리량이 훨씬 낮기 때문에 EasyOCR(0.1098)의 약 두 배입니다. 전체 비용 순위, 비용 공식 및 그 뒤의 산술은 형제 페이지인 1,000페이지당 OCR 비용 페이지에 있습니다 — 이 페이지는 지연 시간에 초점을 맞추고 상관관계만 참고합니다.

자주 묻는 질문

페이지당 가장 빠른 OCR 엔진은?

이 벤치마크에서 가장 빠른 엔진은 docTR입니다: SROIE 2019에서 페이지당 108.7 ms p50 및 281.4 ms p95, 449.3페이지/분을 달성했습니다. 가장 느린 Surya2는 p50에서 24.5배 느린 2,668.0 ms, 처리량에서 37배 느린 12.1페이지/분이었습니다.

GPU에서 페이지당 일반적인 OCR 지연 시간은?

RTX 4090에서 8개 오픈소스 엔진의 SROIE 2019 영수증 기준, 페이지당 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 조합에 특정된 현상입니다. 언어 콘텐츠와 스케줄링이 중앙값뿐 아니라 꼬리 동작도 변화시킨 것입니다.

GPU 없이 Tesseract OCR가 충분히 빠른가?

CPU에서 Tesseract는 SROIE 2019에서 p50 670.9 ms로 78.6페이지/분을 유지했습니다. GPU 기반 전통 엔진보다는 느리지만, 처리량 면에서 모든 VLM보다 빠르며 꼬리 비율도 2.2배로 좁습니다. 이번 벤치마크에서는 CPU 전용으로 테스트되었습니다. '충분히 빠른지'는 처리량과 텍스트 대신 필드 추출이 필요한지에 따라 다릅니다. Tesseract vs PaddleOCR의 CPU 비용 프로필을 참조하세요.

페이지를 더 많이 처리할수록 OCR가 페이지당 더 빨라지는가?

예, 안정 상태 하한에 도달할 때까지는 그렇습니다. 이는 새로운 실행이 아닌 측정 기반의 파생 효과입니다. 모델 초기화는 프로세스/배치당 한 번만 발생합니다. 따라서 배치 또는 순차 처리는 이를 상쇄합니다. 높은 처리량에서는 페이지당 벽시계 시간이 안정 상태 p50에 스케줄링 비용을 더한 값에 수렴합니다. docTR의 SROIE 수치는 이미 그 하한에 근접해 있습니다. Surya2의 수치는 상쇄해야 할 초기화 오버헤드가 더 크다는 것을 보여줍니다.

이 페이지의 지연 시간 수치는 어디서 오나요?

모든 수치는 ImageToTableai/benchmark-ocr에 공개된 1차 벤치마크의 results/summary_metrics.csv(latency_p50_ms, latency_p95_ms, pages_per_minute)의 한 행이며, 각 실행마다 측정 모드(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 등급, 단일 위치/시간 — 이 페이지의 범위 진술입니다.
  • 엔진: 모든 모델은 파인튜닝 없이 기본 제공 상태로 실행됩니다. 실행 매니페스트에 따라 버전이 고정됩니다: 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-served, PaddleOCR-VL 1.6.
  • 측정 모드: warm_then_scored — 지연 시간 수치는 모델 로딩을 제외한 안정 상태의 페이지별 추론이며, 페이지/분은 모델 초기화를 포함한 벽시계 시간입니다.
  • 실행 등급: 16개의 모든 실행은 official입니다; 벤치마크 프로토콜(reports/receipt_v1_official_protocol.md)에 따라 공식 실행만 게시 자격이 있습니다.

지표 정의

  • p50: 안정 상태에서의 페이지당 추론 시간 중앙값 — 50%의 페이지가 더 빨랐습니다. 모델 로딩은 제외됩니다 (warm-then-scored).
  • p95 (꼬리 지연 시간): 페이지당 추론 시간의 95번째 백분위수 — 5%의 페이지가 더 오래 걸렸습니다. 이번 실행 프로토콜에 따른 첫 페이지/프리필 효과 및 일괄 스케줄링 동작을 반영합니다. 프로토콜에 종속적이며, 보편적인 엔진 상수가 아닙니다.
  • p95/p50 비율: 두 CSV 열을 나누어 산출됩니다. 꼬리 분포의 형태 지표이며, 속도에 대한 주장이 아닙니다.
  • 처리량: 모델 초기화를 포함한 벽시계 기준 처리량. 일괄 작업 및 과금 기준이 됩니다.
  • 벽시계 ms/페이지: 60,000 ÷ 페이지/분 — 측정된 처리량에 대한 산술 계산으로, 산출된 추정치로 표기되며, 측정된 수치가 아닙니다.

출처 목록

  1. 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가 포함됩니다. 이 페이지의 모든 지연 시간 및 처리량 수치는 여기의 행으로 추적됩니다.
  2. ImageToTableai/benchmark-ocr 저장소. 결과 CSV, 비식별화된 실행 매니페스트, 고정된 프로토콜 (reports/receipt_v1_official_protocol.md), 재현을 위한 데이터셋 샘플 목록을 호스팅하는 공개 저장소입니다.
  3. results/manifests/ (GitHub). 환경 지문, 모델 버전, 측정 모드 (warm_then_scored), 벽시계 시간 및 아티팩트 해시가 포함된, 게시된 실행당 비식별화된 manifest.json 파일입니다.
  4. Huang et al., "ICDAR2019 Competition on Scanned Receipt OCR and Information Extraction" (2019). SROIE 2019 데이터셋 정의, 작업 구조 및 라이선스 (CC-BY-4.0).
  5. 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 비용 · 기존 OCR vs 문서 파싱 VLM · docTR vs Surya2: CER 동률, 비용 격차 · docTR vs Docling: 단일 패스 vs 파이프라인 · Tesseract vs PaddleOCR: 레거시 CPU vs 최신 GPU

관련 읽을거리: AI OCR vs 기존 OCR 정확도 · AI 이미지 데이터 추출 vs 기존 OCR · AI 문서 추출 가격 (2026)

📮 contact email: [email protected]