사진 글자 추출, 정확하게 끝내는 법 — 인식·구조화·원문 대조

OCR은 날짜·금액·승인번호처럼 짧은 값에서도 쉽게 틀립니다.

이 글의 비실거래 연습 영수증을 Tesseract 5.5.0의 kor+eng, PSM 6으로 직접 읽었습니다. 날짜·수량·단가·품목 금액·배송비·합계 여섯 숫자를 먼저 정해 원본과 대조했습니다.

여섯 개 중 다섯 개는 맞았지만 가장 중요한 합계 11,800원을 41,8002!로 읽었습니다. PSM 11에서는 합계가 11,8002, 품목명 A4용지가 A48A|로 나왔습니다. 결과 대부분이 자연스러워 보여도 핵심값은 원본 대조가 필요했습니다.

이게 사진 글자 추출의 진짜 문제입니다. 읽기 어려운 부분이 비어 있으면 우리는 알아챕니다. 문제는 비어 있지 않다는 것입니다.

OCR은 오독·누락·판독 불가를 모두 낼 수 있습니다

글자 인식 도구는 흐릿한 획을 다른 문자로 추정해 완성된 값처럼 내놓을 수 있습니다. 도구와 설정에 따라 글자를 누락하거나 낮은 신뢰도·판독 불가로 표시하기도 하므로 ‘항상 빈칸 없이 그럴듯하게 채운다’고 일반화할 수는 없습니다.

이 글의 단일 영수증 시험에서는 합계와 품목명에 오독이 나타났습니다. 한 표본으로 오류 위치가 늘 같거나 무작위가 아니라고 결론 내리지 않고, 혼동하기 쉬운 문자와 업무상 중요한 필드를 우선 대조 대상으로 삼습니다.

모양이 겹치는 문자가 첫째입니다. O와 0, l과 1, 3과 8, 5와 S, 2와 Z. 승인번호나 계좌번호처럼 문맥이 없는 문자열에서 특히 위험합니다. 문장 속 글자는 앞뒤로 짐작이라도 되는데, 무작위 번호는 틀려도 어색하지 않기 때문입니다.

구분기호가 둘째입니다. 3.000과 3,000은 점 하나 차이인데 값은 천 배 다릅니다. 금액에서 소수점과 천 단위 쉼표가 뒤바뀌는 건 흔한 사고입니다.

고유명사가 셋째입니다. 사람 이름과 회사명은 마지막 글자에서 자주 어긋납니다. 김서윤이 김서율이 되고, 제2운영팀에서 숫자가 통째로 빠져 제운영팀이 됩니다. 이런 값은 문맥으로 고칠 수 없는데 고쳐진 것처럼 보인다는 점이 위험합니다.

날짜가 넷째입니다. 23과 28, 07과 01처럼 한 자리만 어긋나도 서류의 의미가 달라집니다.

읽기와 정리와 대조를 한 번에 시키지 마세요

전사와 표 정리, 값 교정을 한 번에 요청하면 일부 도구가 원문을 정규화하거나 추정한 값을 섞을 수 있습니다. 이 글은 생성형 도구의 자동 교정률을 별도로 시험하지 않았으므로 합계·이름·구분기호가 반드시 고쳐진다고 단정하지 않습니다. 대신 어느 단계에서 값이 달라졌는지 추적할 수 있도록 전사, 구조화, 원본 대조를 분리합니다.

그래서 세 단계를 분리해야 합니다.

먼저 원문 그대로 옮깁니다. 이 단계의 규칙은 하나입니다. 고치지 말 것. 맞춤법도, 계산도, 이상해 보이는 값도 그대로 둡니다. 못 읽은 자리는 추측하지 말고 표시만 남깁니다.

역할: 첨부 이미지의 원문 전사 담당자

규칙:
- 맞춤법을 고치거나 문장을 자연스럽게 다듬지 않는다.
- 제목, 줄바꿈, 표의 행·열 순서를 가능한 한 유지한다.
- 흐리거나 가려진 글자는 추측하지 말고 [판독 불가]로 쓴다.
- 사진 밖으로 잘린 내용은 [잘림]으로 쓴다.
- 숫자, 소수점, 부호, 통화, 단위는 그대로 적는다.
- 요약, 번역, 계산, 사실 보충은 하지 않는다.

출력:
1. 원문 전사본
2. 판독 불가·잘림 위치 목록

그다음 표로 정리합니다. 여기서도 원문 값은 손대지 않습니다. 계산은 하되 원문과 다른 열에 넣는 것이 핵심입니다. 그래야 ‘영수증에 적힌 합계’와 ‘품목을 더한 합계’가 나란히 보이고, 어긋나는 순간이 눈에 들어옵니다. 앞의 직접 시험에서도 원본 합계 11,800과 OCR 출력 41,8002!가 어긋났으므로 그 자리가 바로 검수 대상이 됐습니다.

아래 전사본을 업무용 대조표로 정리해줘.

[출력 열]
항목 | 원문 값 | 계산·점검 신호 | 상태

[규칙]
- 원문 값을 자동으로 고치거나 다듬지 않는다.
- 날짜, 금액, 승인번호, 단위, 구분기호를 원문 그대로 보존한다.
- 품목 금액은 따로 계산하되 원문 합계와 다른 열에 둔다.
- 합계가 다르면 차이만 계산하고 어느 값이 정답인지 단정하지 않는다.
- O/0, 1/l, 3/8처럼 혼동 가능한 문자는 검수 대상으로 표시한다.
- 읽히지 않는 값은 [판독 불가]로 유지한다.
- 원본을 직접 보지 못했으므로 모든 상태는 미확인으로 시작한다.

[전사본]

마지막은 사람이 원본과 대조합니다. 지급·계약·세금·의료·신원 확인처럼 오류 비용이 큰 문서는 전체 항목과 페이지를 원본에 대조합니다. 개인 메모처럼 위험이 낮은 초안은 금액·날짜·번호·이름부터 우선 확인하되, 확인하지 않은 항목은 미확인으로 남깁니다. ‘확인함’과 ‘아직 안 봄’을 구분해야 검수 범위를 과장하지 않을 수 있습니다.

누락을 잡는 데는 개수 세기가 쓸모 있습니다. 원본의 페이지 수, 표의 행 수, 항목 수를 결과와 맞춰보는 것입니다. 페이지를 넘겨 이어지는 표는 특히 잘 합쳐지거나 잘려나가니, 페이지별 첫 줄과 마지막 줄을 따로 적어두면 경계가 어긋난 걸 바로 알 수 있습니다.

올리기 전에 판단할 것

절차보다 먼저 정해야 할 것이 있습니다. 이 문서를 외부 서비스에 올려도 되는가.

주민등록번호, 계좌번호, 연락처, 사내 기밀이 담긴 문서는 외부 서비스에 올리기 전에 처리 권한, 소속 기관 규정과 서비스의 최신 데이터 정책을 확인합니다. 로컬 처리가 필요하면 네트워크를 끈 로컬 OCR처럼 실제 처리 경로를 확인할 수 있는 방식을 조직 규정에 맞게 선택합니다. 휴대폰·사진 앱의 텍스트 인식은 제품·버전·설정에 따라 데이터 경로가 달라질 수 있으므로 화면 안에서 작동한다는 이유만으로 기기 내 처리라고 단정하지 않습니다. 외부 업로드가 허용된 경우에도 이름 위에 사각형을 덧씌우는 식이 아니라 픽셀에서 복원하기 어렵게 정보를 제거한 사본을 만들고 다시 열어 가림 상태를 확인합니다. 업로드 뒤 토큰으로 바꾸는 것은 이미 전달된 원문을 되돌리지 못합니다.

기울기·그림자·접힘·해상도는 OCR 결과에 영향을 줄 수 있지만, 이 글의 한 장 시험에서는 전처리별 오류 증가 폭이나 소요 시간을 측정하지 않았습니다. 원본을 훼손하지 않은 사본에서 회전·자르기·대비 조정을 바꿔 결과를 비교하고 핵심값은 원본에 대조합니다. PDF는 먼저 텍스트 선택과 검색을 시험하되, 글꼴 인코딩 문제나 이미지 위의 불완전한 텍스트층 때문에 선택되는 결과도 틀릴 수 있습니다. 선택한 텍스트를 원문과 대조하고, 이미지뿐인 페이지나 불완전한 페이지에만 OCR을 추가합니다.

정리하면, OCR 결과는 자연스러워 보여도 오독·누락이 남을 수 있습니다. 읽기와 정리와 대조를 분리하고 원문을 보존하세요. 위험이 낮은 연습 문서는 금액과 번호 같은 핵심 필드부터 확인해 절차를 익힐 수 있지만, 실제 지급·계약·세금·의료·신원 문서는 두 곳 확인으로 끝내지 말고 전체 항목과 페이지를 승인 전에 원본 대조해야 합니다.

Tesseract로 연습 영수증의 핵심 숫자 6개를 대조했습니다

METATOUR 검증 기록 · 검증 유형: METATOUR가 만든 비실거래 연습 영수증을 Tesseract 5.5.0의 한국어·영어 언어팩으로 직접 전사한 단일 이미지 시험입니다.

직접 실행일: 2026-08-23

연습 영수증에서 핵심 숫자 여섯 개를 골랐습니다

대부분의 글자가 맞더라도 날짜·금액·승인번호 같은 핵심 숫자에 조용한 오독이 남는지 확인했습니다.

실제 거래 정보가 아닌 METATOUR OCR 연습용 영수증. 거래일 2026-07-28, 합계 11,800원, 승인번호 083621이 적혀 있다
시험 입력 이미지 · 실제 거래 정보가 없는 연습용 영수증

같은 이미지, 두 가지 페이지 분할 모드

이미지 1장에 Tesseract 5.5.0과 kor+eng 언어팩을 사용하고 페이지 분할 모드만 6과 11로 바꿨습니다.

tesseract sample-receipt.png stdout -l kor+eng --psm 6
tesseract sample-receipt.png stdout -l kor+eng --psm 11

PSM 6은 거래일, 수량 2, 단가 4,400, 품목 금액 8,800, 배송비 3,000, 합계 11,800의 사전 지정 핵심 숫자 6개를 원본과 대조했습니다. 승인번호는 정확도 계산 밖의 추가 관찰로 분리했습니다. PSM 11은 합계와 품목명에서 확인된 오독을 함께 기록했습니다.

모드필드원문관찰한 출력판정
PSM 6거래일2026-07-282026-07-28일치
PSM 6수량22일치
PSM 6A4용지 단가4,4004,400일치
PSM 6A4용지 금액8,8008,800일치
PSM 6배송비3,0003,000일치
PSM 6합계11,80041,8002!불일치
PSM 6승인번호 · 추가 관찰083621083621일치
PSM 11합계11,80011,8002불일치
PSM 11품목명A4용지A48A|불일치

한 장으로 제품 우열을 말하지 않습니다

비실거래 합성 이미지 1장과 Tesseract 한 제품만 시험했으므로 OCR 도구의 일반 성능이나 제품 우열을 말할 수 없습니다. 전체 원시 출력은 내부 실행 기록으로 보존했으며 공개 표에는 핵심 숫자와 확인된 오독만 옮겼습니다. PSM 11에는 같은 사전 지정 평가표를 적용하지 않아 정확도를 계산하지 않았습니다.

참고 자료와 확인한 내용
  • 텍스트 인식 표시 사용하기 — Apple. 아이폰·아이패드·맥에서 사진 속 텍스트를 선택·복사하는 기능과 지원 조건을 확인했습니다. 이 참고 문구는 모든 환경에서의 로컬 처리 보장을 뜻하지 않습니다. 2026-08-12 확인.
  • Google 렌즈로 텍스트 복사 — Google. 안드로이드·구글 포토에서 사진 속 글자를 선택·복사하는 경로를 확인했습니다. 처리 위치와 데이터 정책은 제품의 최신 안내와 설정을 별도로 확인해야 합니다. 2026-08-12 확인.
  • Google 드라이브의 PDF·이미지 텍스트 변환 — Google. 스캔 문서를 문서로 변환하는 기능과 제약을 확인했습니다. 2026-08-12 확인.
  • ChatGPT 이미지 입력 FAQ — OpenAI. 이미지 입력의 처리 방식과 한계에 관한 안내를 확인했습니다. 2026-08-12 확인.
  • 데이터 관리 FAQ — OpenAI. 업로드한 내용의 학습 사용 여부와 설정 경로를 확인했습니다. 민감 문서를 올리기 전 확인해야 할 항목으로 참고했습니다. 2026-08-12 확인.
  • Gemini 앱 데이터 처리 안내 — Google. 대화와 업로드 자료의 처리 정책을 확인했습니다. 2026-08-12 확인.

이 글의 본문은 2026-08-23에 다시 검증했습니다. 승인번호 O/0, 3.000과 3,000, 김서윤과 김서율 등은 반복 오독 유형을 설명하는 가상 예시입니다. 별도로 공개한 연습 영수증 결과는 Tesseract 5.5.0으로 직접 실행한 단일 이미지 시험입니다.

이 한 장의 시험은 도구 성능 일반화나 서비스 우열 비교가 아닙니다. 인식 정확도는 문서 상태·언어·글꼴·도구 버전에 따라 달라질 수 있습니다.

개인정보 주의: 민감정보가 담긴 문서를 외부 서비스에 올리기 전에 소속 기관의 규정과 해당 서비스의 데이터 처리 정책을 직접 확인하세요.

← 전체 글 보기