영수증 OCR을 엑셀로 옮길 때 가장 먼저 구분할 것은 글자 인식과 행·열 복원입니다. Google Drive는 PDF·사진을 텍스트로 바꿀 수 있지만, Google 공식 도움말은 표와 열이 잘 감지되지 않을 수 있다고 밝힙니다. 따라서 영수증을 Google Docs로 열었다고 바로 정확한 엑셀 표가 되는 것은 아닙니다. 원문 보존, 필드 매핑, 금액 검증, 사람 검수까지 이어져야 합니다.
이 글은 2026년 9월 11일 Google 공식 문서에서 직접 확인한 파일 형식·크기·페이지·과금 단위를 원문 항목명과 함께 정리합니다. 실제 영수증이나 Google Cloud 계정으로 정확도·속도·비용을 시험하지 않았습니다. 아래 계산 예시는 공식 과금 단위를 적용한 산술 예이고, 증상표는 재현 결과가 아니라 공식 제한과 데이터 구조에서 도출한 원인 후보와 확인 순서입니다.
공식 문서에서 확인한 영수증 OCR·변환 한도
| 대상 | 공식 문서에서 확인한 값 | 원문 항목명 | ⭐ 적용상 주의 |
|---|---|---|---|
| Google Drive OCR 입력 형식 | 여러 페이지 PDF 또는 사진 파일 .jpeg, .png, .gif |
Convert PDF and photo files to text → Step 1: Prepare the file → Format | 지원 형식이라는 뜻이지 PDF의 표·열 구조가 엑셀 셀로 보존된다는 뜻이 아님 |
| Google Drive OCR 파일 크기 | 2MB 이하 권고 | Step 1: Prepare the file → File size | 공식 문서의 For the best results 아래 준비 권고다. 모든 2MB 파일의 인식 성공이나 정확도를 보장하는 하드 상한으로 바꿔 읽으면 안 됨 |
| Google Drive OCR 글자 크기 | 텍스트 높이 최소 10픽셀 권고 | Step 1: Prepare the file → Resolution | 이미지 전체의 DPI나 가로·세로 해상도 기준이 아니며, 10픽셀을 넘으면 정확도가 보장된다는 뜻도 아님 |
| Google Docs 변환 시 구조 | 목록·표·열·각주·미주는 감지되지 않을 가능성이 큼 | Step 2: Convert the file | 굵게·기울임·글꼴·줄바꿈이 일부 유지되더라도 영수증 품목표의 행·열이 보존된다는 뜻이 아님 |
| Cloud Vision OCR 기능 | TEXT_DETECTION과 DOCUMENT_TEXT_DETECTION |
Optical Character Recognition (OCR) | DOCUMENT_TEXT_DETECTION은 조밀한 문서 텍스트에 최적화된 출력이지 가게명·세액·합계를 항상 정확히 분류해 주는 영수증 전용 보장이 아님 |
| Cloud Vision 이미지 파일 크기 | 20MB | Limits → Image file size | Google Drive OCR의 2MB 권고와 다른 Cloud Vision API 시스템 한도다. 20MB 이하라도 JSON 요청 객체 10MB 한도와 전송 방식은 별도로 적용됨 |
| Cloud Vision PDF 파일 크기 | 1GB | Limits → PDF file size | PDF 한 파일의 크기 한도이지 한 요청에서 동기 처리할 수 있는 페이지 수나 무료 처리량이 아님 |
| Cloud Vision 동기 파일 OCR | files:annotate 요청당 최대 5페이지 |
Limits → Pages per files:annotate request | PDF 전체가 5페이지만 가능하다는 뜻이 아니다. 비동기 방식의 2,000페이지 한도와 구분해야 함 |
| Cloud Vision 비동기 파일 OCR | files:asyncBatchAnnotate 요청당 최대 2,000페이지 |
Limits → Pages per files:asyncBatchAnnotate request | 2,000페이지가 즉시 처리되거나 무료라는 뜻이 아니다. 처리 중 페이지 할당량과 Cloud Storage 입력·출력 구성이 별도로 필요 |
| Cloud Vision 이미지 배치 | images:annotate 요청당 최대 16개 이미지 |
Limits → Images per images:annotate request | 분당 요청 할당량이나 한 달 무료 단위가 16이라는 뜻이 아님 |
| Cloud Vision OCR 무료 구간 | Text Detection, Document Text Detection 각각 매월 첫 1,000단위 무료 |
Prices → First 1000 units/month | 계정 전체에서 영수증 1,000건을 무조건 무료로 처리한다는 뜻이 아니다. 기능을 적용한 이미지마다 과금 단위가 생기고, 여러 페이지 파일은 페이지마다 이미지 1개로 계산됨 |
| Google Docs 문서 크기 | 최대 102만 자, 텍스트 문서를 Docs 형식으로 변환할 때 최대 50MB | File sizes → Documents | OCR 입력 이미지의 허용 크기나 한 문단·한 표의 크기 한도가 아니다. Drive OCR의 2MB 준비 권고와도 별개 |
| Google Sheets 파일 크기 | 최대 1,000만 셀 또는 18,278열(ZZZ) | File sizes → Spreadsheets | OCR 정확도나 한 영수증에 허용되는 품목 수가 아니며, 여러 탭과 미리 채운 셀을 합친 파일 경계 |
| Excel에서 Sheets로 변환한 셀 | 50,000자를 초과한 셀은 Sheets에서 제거 | File sizes → Spreadsheets → Excel conversion cell handling | Excel을 Google Sheets로 변환할 때의 처리다. 네이티브 Sheets 셀이나 수식의 일반 문자 상한이 50,000자라는 뜻이 아님 |
과금 예시는 기능 수를 빼놓으면 오해하기 쉽습니다. 한 페이지 영수증 240장에 DOCUMENT_TEXT_DETECTION 하나만 적용하면 240페이지 × 1기능 = 240단위입니다. 같은 240페이지에 두 개의 과금 기능을 각각 적용하면 240 × 2 = 480단위입니다. 이는 공식 단위 정의를 적용한 계산일 뿐이며, 다른 프로젝트 사용량·Cloud Storage 비용·실패 요청·세금까지 포함한 청구액을 측정한 값은 아닙니다.
조건 → 선택 → 이유: OCR 경로 판단표
| 현재 조건 | 선택 | 이유·합격 기준 |
|---|---|---|
| 소수의 영수증에서 본문을 복사하고 사람이 행을 정리할 수 있다 | Google Drive에서 파일을 Google Docs로 열어 OCR | 설정이 단순하다. 단, 표·열 보존을 기대하지 말고 원본과 상호·날짜·합계를 한 건씩 대조해야 합격 |
| 사진을 프로그램에서 반복 처리하고 단어·블록·문단 위치 정보가 필요하다 | Cloud Vision DOCUMENT_TEXT_DETECTION |
조밀한 문서용 계층 정보를 받을 수 있다. OCR 응답과 최종 엑셀 필드를 별도 저장하고 필드 매핑 오류를 검수 |
| PDF에서 최대 5개 페이지만 즉시 골라 처리한다 | files:annotate |
공식 동기 요청 한도와 맞는다. 6페이지 이상을 한 동기 요청에 넣지 않고 선택 페이지와 원본 페이지 번호를 보존 |
| 5페이지를 넘는 PDF를 일괄 처리한다 | files:asyncBatchAnnotate 검토 |
요청당 최대 2,000페이지까지 가능하다. 완료 대기·Cloud Storage 출력·페이지별 재시도 상태를 설계해야 함 |
| 가게명·날짜·합계·세액 같은 구조화 필드를 다양한 서식에서 뽑아야 한다 | Document AI 같은 구조·엔터티 파싱 경로를 별도 평가 | Cloud Vision 공식 OCR 문서도 스캔 문서의 구조화된 양식 파싱과 엔터티 추출에는 Document AI를 안내한다. 도입 전 자신의 영수증 표본으로 필드별 합격률을 측정 |
| 회계 전표 생성이나 지급처럼 오인식 비용이 크다 | OCR 자동 입력 뒤 사람 승인 | API 성공은 금액의 의미가 맞다는 증거가 아니다. 원본 이미지·원시 OCR·정규화 값·승인자를 남겨야 함 |
엑셀로 내보내기 전에 열 계약을 먼저 만드세요
OCR 원문을 바로 최종 열에 덮어쓰면 어느 단계에서 값이 바뀌었는지 찾기 어렵습니다. 최소한 다음처럼 원문과 정규화 값을 분리합니다.
| 열 | 저장값 | 검수 목적 |
|---|---|---|
source_file, page_no |
원본 파일 식별자와 페이지 번호 | 엑셀 행에서 원본 영수증을 다시 찾기 위함 |
ocr_text_raw |
OCR이 반환한 원문 | 후처리 전 값을 보존해 파싱 오류와 인식 오류를 구분 |
merchant_raw, date_raw, total_raw |
필드로 잘라낸 원문 문자열 | 정규화 과정에서 기호·선행 0·소수점이 사라졌는지 대조 |
merchant, transaction_date, total |
업무 규칙에 맞춘 최종 값 | 정렬·합계·회계 시스템 입력에 사용하는 열 |
validation_status, review_note |
PASS, REVIEW, REJECT와 사유 |
OCR 완료와 검수 완료를 같은 상태로 오인하지 않게 함 |
한 셀에 OCR 원문 전체를 넣었다가 Excel에서 Sheets로 변환한다면 50,000자 초과 셀의 제거 규칙을 고려해야 합니다. 긴 원문은 페이지별 또는 블록별 행으로 나누고 source_file + page_no + block_no를 결합한 키로 다시 조립할 수 있게 합니다. 50,000이라는 값은 Excel→Sheets 변환 규칙일 뿐이므로, 네이티브 Sheets의 일반 셀 한도라고 표시하지 않습니다.
OCR 이후 시트 자동화의 셀·API·트리거 경계는 구글 스프레드시트 자동화 한도표에서 이어서 확인할 수 있습니다. 이메일로 받은 청구서의 원문 보존과 중복 방지 키 설계는 이메일 청구서 자동 추적 기준과 연결됩니다.
금액 검수는 ‘오류 확정’이 아니라 ‘재확인 표시’입니다
- 원본을 보존합니다. OCR 결과만 남기지 말고 파일 식별자와 페이지 번호를 엑셀 행에 연결합니다.
- 문자열과 숫자를 분리합니다.
total_raw에는 OCR 문자열을 그대로 두고, 통화 기호·천 단위 구분자를 처리한 숫자는total에 저장합니다. - 조건부 검증을 둡니다. 공급가액·세액·합계가 모두 있는 영수증에서만
차이 = 합계 - (공급가액 + 세액)을 계산합니다. 할인·면세·봉사료가 있는 문서는 불일치만으로 오인식이라고 확정하지 않습니다. - 중복 후보를 표시합니다. 파일 해시가 같거나 상호·거래일시·합계가 모두 같은 행을 검토 대상으로 보냅니다. 같은 금액의 별도 거래일 수 있으므로 자동 삭제하지 않습니다.
- 완료 상태를 나눕니다. OCR 응답 수신, 필드 파싱, 규칙 검증, 사람 승인을 별도 상태로 기록합니다.
증상 → 원인 후보 → 조치
| 증상 | 원인 후보·구분 방법 | 조치와 재확인 |
|---|---|---|
| Google Docs에는 글자가 생겼지만 품목 행과 열이 무너진다 | Drive OCR 도움말이 밝힌 표·열 감지 한계일 수 있음. 원문 글자 누락과 구조 손실을 따로 확인 | 원본 페이지 번호를 보존하고 필요한 필드만 수동 매핑하거나 문서 구조용 OCR 경로를 평가 |
| 짧고 선명한 영수증도 일부 숫자가 빠진다 | 글자 높이, 방향, 균일한 조명, 대비 중 어느 준비 조건이 어긋났는지 확인 | 원본을 바로 세운 뒤 반사·그림자 없이 다시 촬영. 10픽셀은 합격 보장이 아닌 최소 권고임을 유지 |
| PDF의 6페이지 이후가 동기 결과에 없다 | files:annotate 요청당 5페이지 한도를 넘겼거나 선택 페이지 목록이 잘못됨 |
5페이지 이하로 나누거나 비동기 방식으로 전환하고, 응답의 페이지 번호를 원본과 대조 |
| 무료 사용량이 영수증 장수보다 빨리 줄어든다 | 여러 페이지 또는 복수 기능을 적용해 페이지×기능만큼 단위가 계산됐을 수 있음 | 기능별 사용량과 페이지 수를 분리 집계. “첫 1,000단위 무료”를 “1,000파일 무료”로 계산하지 않음 |
| 금액이 10배·100배 차이 난다 | 소수점·쉼표·통화 기호 제거 단계 또는 숫자 문자 인식 오류 후보 | total_raw와 원본 이미지를 대조하고 정규화 규칙을 수정. 합계만 보고 원문을 덮어쓰지 않음 |
| 공급가액+세액과 합계가 맞지 않는다 | OCR 오류 외에도 할인·면세·봉사료·반올림이 원인일 수 있음 | 불일치를 REVIEW로 표시하고 영수증의 다른 금액 항목을 확인. 자동 오류 확정이나 자동 삭제 금지 |
| 같은 영수증이 여러 행에 들어간다 | 재시도 때 원본 식별자나 멱등 키를 재사용하지 않음 | 파일 해시·페이지 번호를 우선 키로 저장하고, 상호·시각·합계 조합은 중복 후보 판정에만 사용 |
| Excel에서 Sheets로 바꾼 뒤 긴 원문 셀이 비었다 | 변환 전 셀이 50,000자를 초과해 제거됐을 가능성 | 변환 전 문자 수와 원본을 확인하고 페이지·블록 단위로 분할. 이 규칙을 네이티브 Sheets 일반 한도로 오인하지 않음 |
공식 문서에 명시되지 않은 값과 검증 경계
| 확인하려던 항목 | 확인 결과 | 구분·본문 처리 |
|---|---|---|
| 영수증 OCR 정확도 백분율 | 확인한 Google 문서에 공통 보장값 명시 없음 | 명시 없음. 영수증 서식·촬영 품질과 무관한 단일 정확도 수치를 만들지 않음 |
| 10픽셀 글자의 성공률 | 성공률 숫자 명시 없음 | 명시 없음. 10픽셀은 Drive 도움말의 준비 권고이지 정확도 보장선이 아님 |
| Google Drive OCR 처리시간 | 확인한 도움말에 완료시간 숫자 명시 없음 | 명시 없음. “몇 초 안에 끝난다”는 값을 쓰지 않음 |
| 이 글의 전처리별 정확도·시간 절감 효과 | 실제 영수증으로 시험하지 않음 | 미측정. 흑백·대비 보정 후 정확도가 높아졌다는 기존 완료형 주장을 삭제 |
| 네이티브 Google Sheets 셀의 일반 문자 상한 | 확인한 파일 크기 문서에는 독립된 숫자 명시 없음 | 명시 없음. Excel→Sheets 변환 시 50,000자 초과 셀 제거 규칙만 그 범위대로 기재 |
| 인용한 Google 공식 문서 | 2026-09-11 본문 접근 성공 | 접근 성공. 로컬 검사기의 DNS 접근 실패와 문서에 숫자가 없는 경우를 구분 |
확인한 공식 자료
- Convert PDF and photo files to text — 입력 형식, 2MB 권고, 10픽셀 권고, 방향·화질, Google Docs 변환 시 표·열 감지 한계
- Detect and extract text from images —
TEXT_DETECTION과DOCUMENT_TEXT_DETECTION의 출력 범위 - Cloud Vision Quotas and limits — 이미지·PDF 크기, 동기·비동기 페이지 수, 요청당 이미지 수
- Cloud Vision pricing — 이미지·페이지·기능별 과금 단위와 OCR 기능의 월 첫 1,000단위 무료 구간
- Files you can store in Google Drive — Docs 문서·변환 크기, Sheets 셀·열, Excel 변환 셀 문자 처리
최종 합격 기준은 OCR API가 성공했다는 사실이 아닙니다. 각 엑셀 행에서 원본 영수증을 찾을 수 있고, 원시 문자열과 정규화 값을 비교할 수 있으며, 금액 불일치와 중복 후보가 사람 승인 전에 분리되는 상태여야 합니다.