
도장 아래의 글자 읽기
요약
비전 모델이 직인(seal)에 의해 가려진 텍스트를 얼마나 정확하게 읽어내는지 테스트하는 새로운 벤치마크 실험을 소개합니다. 불투명도와 주변 문맥을 활용한 재구성 능력을 통해 모델의 시각적 인식 한계를 분석합니다.
핵심 포인트
- 직인의 불투명도에 따른 비전 모델의 텍스트 인식 능력 차이 분석
- 반투명한 인영 아래의 텍스트는 인식하지만, 불투명한 경우 인식 불가
- 주변 문맥을 통해 가려진 필드를 재구성하는 모델의 능력 측정
- 기존 서구권 벤치마크에서 다루지 않은 일본식 문서 특수성 반영
여기 300 dpi로 렌더링된 일본어 인보이스(invoice)의 발행인 이름이 있습니다. 그 바로 위에 빨간색 회사 직인이 찍혀 있습니다. 이는 일본의 거의 모든 인보이스에 찍혀 있는 종류의 직인입니다. 왼쪽의 직인은 일반적인 주색(vermilion) 인영입니다. 실제 주육(朱肉) 잉크가 종이에 묻어나는 방식처럼 반투명합니다. 오른쪽은 동일한 문자를 완전히 가리고 있는, 불투명도가 100%인 동일한 직인입니다.

반투명한 직인 아래에서 gpt-5.6-sol@high는 회사 이름을 완벽하게 읽어냈습니다. 검은색 잉크가 빨간색 아래에 살아있었고, 모델은 이를 그대로 뚫고 읽었습니다. 불투명한 직인 아래에서는 아무것도 읽지 못했습니다. 동일한 모델, 동일한 문자, 동일한 위치였습니다. 유일한 변수는 아래의 잉크가 여전히 존재하는지 여부였습니다.
그 차이가 두 가지 발견 중 첫 번째입니다. 두 번째 발견은 더 기이하며, 반대 방향으로 작동합니다.
측정 대상
이것은 제가 최근에 발표한 벤치마크의 보완 작업입니다. 해당 벤치마크는 각 비전 모델(vision model)이 어디서부터 읽기를 멈추는지 확인하기 위해 7가지 스캔 해상도를 통해 하나의 일본어 인보이스를 열화시켰습니다. 당시의 축은 흐릿함(blur)이었습니다. 이번 실험은 문서를 완벽하게 선명하게 유지하면서, 서구권의 벤치마크에서는 테스트하지 않는, 일본 서류가 일상적으로 갖는 두 번째 스트레스 요인을 도입했습니다: 바로 **직인에 의한 폐쇄(occlusion by a seal)**입니다.
한 가지 변수는 대상 필드의 잉크를 직인이 얼마나 가리는가이며, 0%(대조군, 직인이 텍스트 바로 아래에 위치)부터 100%(완전히 파묻힘)까지 6단계로 나뉩니다. 2×2 구조에서 두 가지 요소가 변합니다:
- 불투명도 (Opacity). 반투명한 인장 (곱하기 (multiply) 혼합 모드, 아래의 검은색 잉크를 읽을 수 있음) 대 불투명한 패드 (잉크가 물리적으로 사라짐 — 생성 모델이 대상 박스 내부의 어두운 부분이 아무것도 남지 않았다고 픽셀 단위로 단언함).
- 대상 (Target). 페이지의 다른 요소와 산술적 관계가 없는 발행인 이름. 그리고 구성상 '합계 - 세금'과 일치하며, 모든 단계에서 두 값이 모두 보이도록 남겨진 소계 (subtotal).
두 가지 분류는 서로 다른 질문을 던집니다. 불투명도는 모델이 붉은 잉크를 투과하여 그 아래의 검은색을 볼 수 있는지 테스트합니다. 대상은 모델이 주변 필드로부터 매몰된 필드를 재구성할 수 있는지 테스트합니다. 결과 1은 첫 번째 축에서, 결과 2는 두 번째 축에서 도출되었습니다.
추출 프롬프트(extraction prompt)에는 도장에 대한 언급이 전혀 없습니다. 모델이 도장을 투과하여 읽는지, 필드를 비워두는지, 아니면 다른 방식으로 채우는지가 측정 대상입니다. 따라서 이러한 동작을 지시하는 것은 측정을 망가뜨리게 됩니다. 모든 실험은 블러(blur) 벤치마크와 동일한 카탈로그에 있는 27개의 모델 변체(variant)를 대상으로, 셀당 5회 반복하여 총 3,240개의 작업을 수행했습니다.
결과 1: 색상 채널 (the chromatic channel)
인간의 OCR 파이프라인은 수십 년 동안 레드 채널 드롭(red-channel drop) 방식을 통해 인장을 처리해 왔습니다. 즉, 주홍색을 제거하면 그 아래의 검은색 텍스트가 드러나는 방식입니다. 반투명 대 불투명 분류는 시각 모델(vision model)이 이와 동일한 작업을 암시적으로 수행하는지 측정합니다.
최상위 해상도 변체들은 거의 예외 없이 이를 수행합니다. 발행인 이름의 커버리지가 100%인 반투명 인장 아래에서, @high 변체들은 60회 중 60회 모두 이를 정확하게 읽어냈습니다. 반면 동일한 커버리지의 불투명 인장 아래에서, 동일한 변체들의 점수는 60회 중 0회였습니다. 모델을 막아서는 것은 붉은색이 아니라, 그 아래 잉크의 파괴입니다. 이 효과는 거의 모든 강력한 판독기에서 나타나며, 색상 우위(chromatic advantage)는 0.56에서 0.76 사이로 유지됩니다.
한 모델은 이 결과를 뒤집습니다. nova-2-lite는 음수(-) 점수를 기록했습니다. 즉, 불투명한 인장보다 반투명한 인장이 모델에 더 큰 해를 끼쳤습니다. 레이어링된 색상이 단순히 사라진 필드보다 모델을 더 심하게 혼란스럽게 만든 것입니다.
결과 2: 읽는 자는 침묵하고, 읽지 못하는 자가 답한다
이제 불투명한 인장(opaque seal) 아래, 사다리(ladder) 깊숙한 곳에 있는 소계(subtotal)를 살펴보겠습니다. 숫자가 물리적으로 파괴된 80% 및 100% 커버리지 구간입니다. 여기서 나온 모든 정답은 페이지에서 읽어낸 것이 아닙니다. 읽을 수 있는 것이 아무것도 남아 있지 않기 때문입니다.
Anthropic 모델들은 30점 만점에 0점을 기록했습니다. 세 개의 모델, 두 개의 커버리지 수준, 각각 다섯 번의 실행 결과입니다. 숫자가 사라지면, 이 모델들은 빈칸으로 남겨둡니다.
OpenAI 및 Azure @low 변체(variants)들은 100점 만점에 80점을 기록했습니다. 픽셀이 사라진 필드임에도 불구하고, 이들은 다섯 번 중 네 번이나 정확한 값을 반환했습니다.
이는 경계 영역(margins)에서 발생하는 사소한 효과가 아닙니다. 이는 명확한 역전 현상이며, 사다리(ladder)를 통해 그 모습이 가시화됩니다. 파괴된 소계(destroyed-subtotal) 패널에서, 숫자를 읽을 수 있는 모델들은 하단에서 빨간색(빈칸)으로 변하는 반면, 숫자를 읽을 수 없는 모델들은 흰색을 유지합니다. 이 시리즈 전체에서 가장 무서운 OCR(광학 문자 인식) 오류는 잘못 읽는 것이 아닙니다. 이번 사례는 읽기 시도조차 하지 않은 것입니다.

지금 일어나고 있는 일은 산술 (arithmetic)입니다. 소계 (subtotal)는 총액 (total) − 세금 (tax)와 같으며, 구조상 이 두 값은 모든 단계에서 페이지상에 보입니다. 숨겨진 셀을 읽기를 포기한 모델이라도 주변 셀들을 통해 이를 재구성할 수 있습니다. 이는 제가 이전에 작성했던 패턴의 사촌 격입니다. 모델이 특정 필드를 읽을 수 없을 때, 일부 모델은 빈칸으로 남겨두는 대신 값을 지어내곤 합니다. 그 경우 지어낸 숫자는 그럴듯한 사전 확률 (prior)에서 가져온 것이지만, 여기서는 눈에 보이는 주변 값들로부터 계산된 것입니다. 어느 쪽이든 모델은 문서에 적힌 내용과는 다른 값으로 답변합니다. 그리고 이것이 이 프로세스를 외상매입금 (accounts-payable) 흐름에 연결하려는 사람에게 중요한 부분입니다: 파생된 값 (derived value)은 정의상 내부적으로 일관성이 있습니다. 그것은 합계가 맞습니다 (reconciles). "소계, 세금, 총액이 합산되는가?"라고 묻는 모든 검증 체크 (validation check)를 통과합니다. 왜냐하면 그 숫자는 읽히도록 만들어진 것이 아니라, 합산되도록 만들어졌기 때문입니다. 이를 잡아낼 수 있는 유일한 수단은 당신이 구매를 피하려 했던 바로 그것, 즉 실제 문서를 직접 확인하는 사람뿐입니다.
어떤 산술인가
두 가지 경로가 이를 만들어낼 수 있습니다 — 총액 − 세금, 또는 총액 ÷ 1.1 — 그리고 세금이 정확히 10%이기 때문에 두 방식은 동일한 답을 내놓으며, 따라서 값만으로는 이를 구별할 수 없습니다. 하지만 @low 변형 모델들은 폐쇄 (occlusion)가 없는 상태에서 세금 필드에 대해 50번 중 49번 정확하게 답변했습니다. 즉, 세금이 보이고 답변된 상태에서는 뺄셈을 직접 사용할 수 있으며 나눗셈은 불필요합니다. 총액 − 세금을 위한 재료들이 이미 손에 쥐어져 있었던 것입니다. 증거는 여기까지입니다. 재료들이 존재했다는 말은 할 수 있지만, 그것이 사용되는 것을 직접 목격했다고는 할 수 없습니다.
일반화되지 않는 것, 그리고 하나의 솔직한 공백
두 가지 주의 사항이 있습니다. 이 시리즈는 바로 이 점들을 명시하는 데 목적이 있기 때문입니다.
위의 경로 결론은 이곳의 세율이 약 10%이기 때문에 오직 성립하는 것입니다. 이로 인해 두 가지 산술 경로가 하나의 결과로 수렴됩니다. 혼합 세율이 적용된 미래 버전에서는 '총액 − 세금'과 '총액 ÷ 1.1'이 서로 다른 숫자를 생성하게 될 것이며, 이는 출력값 자체에 경로의 지문(fingerprint)을 남기게 될 것입니다. 그것이 문제를 해결하는 깔끔한 방식이지만, 이번 실행에서는 불가능합니다.
그리고 도장 속의 글자입니다. 도장에는 検収済印(검수 완료 인)라고 적혀 있습니다. 이는 수령 회사가 찍는 검수 도장으로, 발행인 정보가 전혀 포함되어 있지 않다는 점 때문에 정확히 이 문구가 선택되었습니다. claude-fable-5는 전통적인 오른쪽에서 왼쪽으로 읽는 열 순서를 포함하여 이를 94%의 확률로 정확하게 읽어내지만, 대부분의 모델은 이를 단순한 장식으로 간주하고 무시합니다. 하지만 検収済印은 흔히 쓰이는 실제 문구이므로, 이를 읽어내는 모델을 학습을 통해 이를 인식한 모델과 분리할 수 없습니다. 이 수치가 읽기 능력을 반영하는지 아니면 기억력을 반영하는지는 진정으로 해결되지 않은 문제입니다. 미래 버전에는 가상의 도장 문구가 필요합니다. 이는 blur 벤치마크가 가상의 ground truth(실제값)에 대해 가르쳐준 것과 동일한 교훈이며, 이를 도장에 적용한 것입니다.
네 개의 패널 전체를 관통하는 그림
두 가지 발견을 종합해 보겠습니다. 반투명한 도장은 뛰어난 독자에게 큰 장애물이 되지 않습니다. 검은 잉크가 빨간색 바로 아래에 그대로 있기 때문입니다. 불투명한 도장은 해당 영역을 파괴하며, 그 이후 모델이 수행하는 동작에 따라 유형이 분류됩니다. 벤치마크에서 가장 뛰어난 독자들은 침묵합니다. 특정 부류의 약한 독자들은 주변 영역으로부터 조용히 답을 계산해내고, 그것을 본 적이 없다는 어떠한 표시도 없이 답을 내놓습니다.
blur 벤치마크에는 내용을 지어내는 독자와 머릿속이 하얘지는 독자가 있었습니다. 이번에는 세 번째 유형이 추가되었습니다. 바로 유도자(deriver)입니다. 이들은 당신이 질문한 것(문서에 무엇이라고 적혀 있는가) 대신, 당신이 묻지 않은 질문(다른 값들을 고려할 때 이 숫자는 무엇이어야 하는가)에 답합니다. 그리고 유도된 답은 논리적으로 일치하기 때문에, 이 세 가지 유형 중 포착하기 가장 어렵습니다.
이 발견의 동반 사례는 모델이 현실을 교정하다 (The model corrected reality)입니다. 이는 모델이 필드를 완벽하게 읽어낸 뒤, 오히려 그것을 무효화한 사례입니다. 두 사례 모두 모든 개연성 검사 (plausibility check)를 통과하는 답변들에 관한 것입니다.
방법론 참고 사항: 합성 송장(모든 이름은 가상임)을 대상으로 3,240건의 분석 작업 수행, 셀당 5회 반복, 2026년 7월 본인의 문서 처리 게이트웨이(document-processing gateway)를 통해 실행되었습니다. 도장 합성(stamp compositing), 픽셀 수준의 폐쇄 검사(pixel-level occlusion checks), 스코어러(scorer), 그리고 기록된 실행 결과는 공개되어 있습니다: ldxhub-io/examples › analyzedoc/hanko-benchmark. 이 기사의 모든 수치는 점수가 매겨진 출력값(scored output)으로부터 재현 가능합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기