space ocr
가이드아티클요금문서
developer

같은 문서, 같은 스키마, 다른 답: space-ocr vs Mistral

어려운 문서 8장, 463개 필드, 엔진당 3런의 통제 벤치마크. 필드 판독률, 런 간 안정성, 그리고 점수표엔 안 보이는 좌표의 격차.

6 분 분량· 2026-08-08

OCR 업체 데모는 어디든 깨끗한 인쇄 청구서를 완벽하게 읽습니다. 저희 것도 마찬가지고요. 그런데 그건 실제 도입 판단에 아무 정보가 안 됩니다. 정말 중요한 질문은 세 가지입니다. 어려운 문서에서는 어떻게 되는가. 같은 페이지를 두 번 돌리면 답이 바뀌는가. 그리고 틀린 값을 전부 손으로 재확인하지 않고 어떻게 골라내는가.

그래서 직접 쟀습니다. 저희 회귀 코퍼스에서 가장 어려운 문서 8장을 골라 space-ocr와 Mistral Document AI에 완전히 같은 요청을 보내고, 같은 스크립트로 채점했습니다. 이 글은 그 결과이고, 반박하고 싶은 분이 정확히 반박할 수 있을 만큼 방법을 다 적었습니다.

설계는 이렇습니다. 실제 문서 8장(일본어 납품서들, 상품명과 수량·단가가 두 줄로 갈리는 마트 영수증, 모니터를 찍은 22행 도매 시세표, 보수 명세서), 채점 가능한 필드 463개. 세 팔 모두 같은 이미지, 같은 필드 스키마, 같은 '인쇄된 그대로 추출' 지시를 받았습니다. space-ocr 프로덕션 필드 추출 API, Mistral OCR의 JSON 스키마 어노테이션(mistral-ocr-latest), Mistral 비전 LLM의 구조화 출력(mistral-medium). 팔당 3런, 공백 제거 후 정확 일치로 채점, 72개 런의 원문 전부 보존. 2026년 8월.

벤치마크 결과 카드: 문서 8장 463필드에서 space-ocr 91.1%, Mistral OCR 70.0%, Mistral 비전 LLM 73.5%
어려운 문서 8장, 463개 필드, 팔당 3런, 같은 스키마와 채점기. 2026년 8월.

결과부터. space-ocr는 463개 필드 중 91.1%를 정확 일치로 읽었습니다(3런 평균). Mistral OCR 어노테이션은 70.0%, Mistral 비전 LLM은 73.5%였습니다. 구분자나 띄어쓰기만 다른 형식 차이를 전부 제외하고 내용 오류만 세도 격차는 그대로입니다. 런당 space-ocr 약 23건, Mistral 두 팔은 각각 119건과 93건.

일반화하기 전에 알아둘 부분이 있습니다. Mistral은 글자를 잘 읽습니다. 이 세트에서 가장 깨끗한 문서인 22행 인쇄 시세표에서는 141개 중 139개로 저희와 동률이었습니다. 격차는 문서가 구조적으로 까다로워질 때 벌어집니다. 상품명이 윗줄, 수량과 단가가 아랫줄인 영수증에서 Mistral은 런당 13개 중 2.3개에 그쳤습니다. 합계 블록을 상품 행으로 흡수하고 두 줄을 짝짓지 못했거든요. 어수선한 납품서에서는 수량이 규격 열에 들어갔습니다. 글자는 대체로 맞았는데, 그 글자가 앉은 표가 틀린 겁니다.

일관성은 그 자체로 하나의 발견이었습니다. 같은 입력 3런에서 저희 런당 총점은 16필드 움직였습니다. Mistral OCR은 100필드 움직였고요. 한 시간 전 72개 중 58개를 읽던 문서가 다음 런에서 3개로 돌아왔고, 43행 표의 모든 열이 소리 없이 뒤섞여 있었습니다. 응답 어디에도 방금 돈을 낸 런이 어느 쪽이었는지 알려주는 신호는 없습니다.

나란히 비교: space-ocr는 22행 시세표에 필드별 박스 138개를 그리고, Mistral은 표 전체를 덮는 사각형 하나를 반환
같은 시세표를 두 엔진에 통과시킨 결과. 왼쪽은 필드마다 박스 하나, 오른쪽은 표 전체가 블록 하나.

이 이미지가 진짜 논점이고, 어떤 점수표에도 안 나옵니다. 저 시세표에서 space-ocr는 박스 138개를 돌려줬습니다. 필드 하나에 하나씩, 각각 읽어낸 픽셀에 붙어서요. Mistral은 표 전체에 사각형 하나를 돌려줬습니다. 응답에 필드별 좌표라는 것 자체가 없기 때문입니다. 어떤 문서에서도요. 블록 윤곽이 최대 해상도입니다. 검증 신호도 전혀 없습니다. Mistral의 값이 틀리면 조용히 틀리고, 찾는 방법은 전부 재확인뿐입니다.

space-ocr의 값에는 박스, 그 박스 아래 글자가 값과 일치하는지 말하는 text_verified, 사유가 담긴 needs_review가 붙고, 이번 릴리스부터는 ocr_confidence 점수와 페이지에 반복되는 값을 위한 label 앵커도 붙습니다. 이 벤치마크의 정직한 요약은 Mistral이 못 읽는다가 아닙니다. 깨끗한 인쇄물은 잘 읽습니다. 한쪽 API는 어느 답을 믿어도 되는지 보여주고, 다른 쪽은 전부 믿으라고 요구한다는 게 요약입니다.

✓ Verified

검증이 작동하는 방식: 언어 모델은 값과 워드 토큰 힌트만 반환하고 좌표는 절대 만들지 않습니다. 엔진이 반환된 값 하나하나를 OCR 패스가 실제로 감지한 페이지의 심볼과 글자 단위로 대조해 match_ratio로 점수화하고(0.85 이상이 확신 매칭), 두 엔진을 교차검증해 불일치를 사유와 함께 needs_review로 표시합니다. 박스는 xmin/ymin/xmax/ymax, 0~1000 정규화입니다. 위 수치에 대한 공정성 노트 하나: 정답지가 저희 파이프라인의 출력 관례 기준으로 동결돼 있어서, 저희를 포함한 모든 라이브 엔진이 경계 분할 차이로 감점됩니다. 절대값은 하한으로, 상대 비교를 결론으로 읽어주세요. 전체 방법과 72런 원문이 보존되어 있습니다.

가격도 벤치마크 글답게 그냥 말하겠습니다. 성공한 스캔 1장에 $0.05, 실패는 자동 환불, 매달 첫 100장은 카드 등록 없이 무료입니다. 누구의 차트든 믿기 전에, 이 글의 차트를 포함해서, 여러분의 문서 5장을 직접 양쪽에 돌려보세요. 아래 단계가 저희가 쓴 절차 그대로입니다.

  1. 데모 말고 아픈 문서를 고르세요
    여러 줄 레코드, 반복되는 값, 화면을 찍은 사진, 조밀한 표처럼 실제로 고생시키는 페이지 5~10장을 고릅니다. 깨끗한 샘플로는 업체가 갈리지 않습니다.
  2. 스키마와 지시를 하나로 고정하세요
    필드 목록을 한 번만 쓰고, 같은 이름과 설명으로 모든 엔진에 동일하게 보냅니다. 값은 인쇄된 그대로 요청하세요.
  3. 정답지는 손으로 먼저 쓰세요
    아무것도 돌리기 전에 필드마다 기대값을 옮겨 적고, 이후에는 수정하지 않습니다.
  4. 엔진마다 최소 3번 돌리세요
    한 번의 런은 불안정성을 숨깁니다. 모든 런을 같은 스크립트로 채점하고 평균이 아니라 흔들림을 보세요.
  5. 조용한 오류를 따로 세세요
    틀린 값마다 엔진이 플래그를 달았는지 기록합니다. 플래그가 달린 오답은 한 번 훑는 비용이지만, 신호 없는 오답은 그 위에 쌓은 프로세스 전체의 비용입니다.
Mistral OCR이 문서를 못 읽는다는 뜻인가요?
아닙니다. 깨끗한 조밀 인쇄물에서는 글자 판독이 저희와 동률이었습니다. 저희가 잰 격차는 문서 구조 처리(여러 줄 레코드 짝짓기, 표 열 유지), 런 간 안정성, 그리고 필드별 좌표와 신뢰 신호의 부재에 있습니다.
이 벤치마크를 재현할 수 있나요?
네. 코퍼스 정의, 실제 요청, 채점 스크립트, 72개 런의 원문이 전부 보존돼 있습니다. 같은 이미지, 같은 필드 스키마, 같은 지시, 같은 채점기, 팔당 3런이라는 방법을 본문에 그대로 적었습니다.
업체가 만든 벤치마크를 왜 믿어야 하나요?
결론이 아니라 출발점으로 읽어주세요. 방법과 주의사항, 그리고 Mistral이 저희와 동률이었던 케이스까지 공개했습니다. 가장 강한 근거는 호출 한 번으로 직접 확인되는 구조적 차이입니다. 한쪽은 필드별 좌표와 검토 플래그를 반환하고, 다른 쪽은 안 합니다.
space-ocr가 모든 문서에서 이기나요?
아니요. 가장 깨끗한 인쇄 표에서는 두 엔진이 같은 수의 필드를 읽었습니다. 코퍼스 전체에서 유지된 차이는 구조 처리, 런 간 일관성, 그리고 검증 레이어였습니다.
필드별 좌표가 실제로 뭘 해주나요?
감사 가능성입니다. 사람이 값을 클릭해 정확히 어디서 읽혔는지 보고, 전부가 아니라 플래그된 필드만 검토하고, 틀린 값이 스프레드시트나 ERP에 들어가기 전에 잡을 수 있습니다.

직접 벤치마크해 보세요

매달 100장 무료. 모든 값이 박스와 신뢰 판정을 달고 돌아옵니다.