Optical Character Recognition (OCR)
광학 문자 인식(OCR)은 스캔 문서와 사진에 있는 텍스트를 기계가 읽을 수 있는 문자로 변환합니다. 코드와 함께 검출 및 인식 단계를 살펴봅니다.
광학 문자 인식(OCR)은 스캔한 페이지, 사진, 스크린샷, 비디오 프레임 등의 이미지 속 텍스트를 소프트웨어가 검색하고 편집하며 분석할 수 있는 기계 판독 가능 문자로 변환하는 기술입니다. 초기 시스템은 알려진 글꼴의 저장된 템플릿과 각 문자를 대조했습니다. 최신 OCR은 딥러닝을 사용해 이미지 어디서든 텍스트를 찾고 단어와 줄 전체를 한 번에 읽기 때문에 다양한 글꼴, 낮은 해상도, 원근, 복잡한 배경을 처리할 수 있습니다. OCR은 송장이나 책과 같은 문서 텍스트와 표지판, 제품 라벨, 번호판과 같은 장면 텍스트를 모두 처리합니다.
OCR의 작동 방식#
대부분의 OCR 시스템은 두 모델을 순차적으로 실행합니다:
- 텍스트 탐지: 탐지기가 텍스트가 포함된 이미지 영역을 찾아 각 단어나 줄의 박스 또는 다각형을 출력합니다. EAST, CRAFT, DBNet과 같은 장면 텍스트 탐지기는 픽셀 단위로 텍스트 영역을 예측해 곡선이거나 회전된 텍스트를 처리합니다.
- 텍스트 인식: 각 영역을 크롭하고 똑바르게 보정한 뒤 고정된 높이로 크기를 조정하고, 인식기가 문자를 읽습니다. CRNN 설계는 크롭 이미지를 CNN에 통과시킨 다음, 양방향 LSTM으로 결과 특징 열을 왼쪽에서 오른쪽으로 읽고 연결주의 시간 분류(CTC)로 디코딩합니다. CTC는 각 문자의 시작 위치에 레이블을 지정하지 않고 열별 예측을 문자 문자열에 정렬합니다. Microsoft의 TrOCR과 같은 트랜스포머 인식기는 대신 텍스트 디코더로 문자를 생성합니다.
품질이 낮은 스캔에서는 이진화와 기울기 보정 등의 전처리가 여전히 도움이 됩니다. 후처리에서는 출력이 사전, 예상 형식 또는 언어 모델에 부합하는지 확인합니다. EasyOCR은 CRAFT 탐지기와 CRNN 인식기의 두 단계를 하나로 묶어 80개가 넘는 언어를 지원합니다:
import easyocr
# Load EasyOCR's CRAFT text detector and English CRNN text recognizer
reader = easyocr.Reader(["en"])
# Detect every text region in the photo, then read the characters inside it
results = reader.readtext("https://ultralytics.com/images/bus.jpg")
# Each result holds a 4-corner box, the recognized string, and a confidence score
for box, text, confidence in results:
if confidence > 0.5:
print(f"{text}: {confidence:.2f}")버스 측면에 표시된 단어인 cero: 0.95과 emisiones: 0.99을 출력합니다. 탐지기는 버스의 도트 매트릭스 행선지 표시와 창문의 작은 글씨도 찾지만, 인식기가 신뢰도 0.5 미만의 알아보기 어려운 문자열을 반환하므로 임계값에 따라 해당 결과는 제외됩니다.
문서 인식에서는 인식 전에 레이아웃 단계가 추가됩니다. 레이아웃 모델이 페이지를 블록으로 나누고, 각 블록 유형에 맞게 처리한 다음 읽는 순서대로 결과를 재구성합니다. 따라서 2단 편집 기사는 한 번에 한 열씩 읽습니다:
정확도는 출력 텍스트를 정답 텍스트로 바꾸는 데 필요한 문자 삽입, 삭제, 대체 횟수를 정답 텍스트의 길이로 나눈 문자 오류율(CER)과, 같은 방식으로 단어를 기준으로 계산하는 단어 오류율(WER)로 측정합니다.
OCR 엔진 및 모델#
오픈 소스 Tesseract 엔진은 1980년대 Hewlett-Packard에서 시작되어 2005년에 오픈 소스로 공개되었으며, Google의 후원으로 2006년부터 2018년까지 개발되었습니다. 버전 4에는 LSTM 네트워크 기반 인식 엔진이 추가되었습니다. Google Cloud Vision 및 Amazon Textract와 같은 클라우드 서비스는 레이아웃, 표, 양식 추출 기능을 추가합니다. 비전 언어 모델은 문서를 처음부터 끝까지 읽는 경우가 늘고 있습니다. Allen Institute for AI의 olmOCR은 미세 조정된 비전 언어 모델로 PDF 페이지를 깔끔한 텍스트로 변환하며, OCR을 사용하지 않는 문서 모델은 별도의 기록을 먼저 생성하지 않고도 페이지에 대한 질문에 답합니다.
OCR과 관련 용어#
- 필기 인식: 필기 텍스트 인식(HTR) 또는 지능형 문자 인식(ICR)이라고도 하며, 인쇄된 글자보다 형태가 훨씬 다양하고 문자가 자주 이어지는 손글씨를 판독합니다.
- 객체 탐지: 탐지기는 정지 표지판을 객체로 찾을 수 있지만, OCR은 표지판에 인쇄된 S-T-O-P 문자를 읽습니다. OCR의 자체 탐지 단계는 텍스트를 읽지 않고 위치만 찾습니다.
- 이미지 분류: "송장"과 같이 이미지 전체에 레이블 하나를 지정하는 반면, OCR은 이미지 안의 문자 시퀀스를 추출합니다.
- 지능형 문서 처리: OCR에 레이아웃 분석과 명명된 개체 인식(NER)을 결합해 송장 날짜, 공급업체, 총액과 같은 특정 필드를 업무 시스템으로 가져옵니다.
실제 적용 사례#
- 번호판 인식: 통행료 징수, 주차, 교통 단속 시스템은 각 번호판을 탐지한 다음 읽습니다. 번호판 박스로 학습한 YOLO26 모델은 탐지 단계를 처리합니다. 이 모델의 회전 바운딩 박스 변형은 기울어진 번호판에 회전된 박스를 맞춰 인식 전에 크롭 이미지를 똑바르게 보정할 수 있습니다.
- 문서 디지털화: 은행, 보험사, 정부 기관은 양식, 영수증, 기록물을 검색 가능한 텍스트로 변환하고, 도서관은 인쇄된 책을 대규모로 디지털화합니다.
- 접근성 및 번역: 스크린 리더와 카메라 번역 앱은 표지판, 메뉴, 라벨을 음성으로 읽어 주거나 실시간 이미지에 번역을 오버레이합니다.
- 제조 및 물류: 카메라는 생산 라인에서 로트 코드, 유효 기간, 일련번호를 읽습니다. 선적 컨테이너 코드는 ISO 6346을 따르며, 11자 중 마지막 문자는 앞의 10자로 계산한 체크 숫자이므로 판독기는 대부분의 오판독 코드를 자동으로 걸러낼 수 있습니다.










