Optical character recognition
광학 문자 인식(Optical character recognition; OCR)은 사람이 쓰거나 기계로 인쇄한 문자의 영상을 이미지 스캐너로 획득하여 기계가 읽을 수 있는 문자로 변환하는 것이다.
이미지 스캔으로 얻을 수 있는 문서의 활자 영상을 컴퓨터가 편집 가능한 문자코드 등의 형식으로 변환하는 소프트웨어로써 일반적으로 OCR이라고 하며, OCR은 인공지능이나 기계 시각(machine vision)의 연구분야로 시작되었다.
거울이나 렌즈 등의 광학 기술을 이용한 광학 문자 인식과 스캐너 및 알고리즘에 의한 디지털 문자 인식은 다른 영역으로 생각되었으나 이제는 광학 문자 인식이라는 말이 디지털 문자 인식을 포함하는 것으로 간주되었다.
초기 시스템은 특정한 서체를 읽기 위해 미리 해당 서체의 샘플을 읽는 것을 뜻하는 "트레이닝"이 필요했지만, 지금은 대부분의 서체를 높은 확률로 변환이 가능하다. 몇몇 시스템에서는 읽어들인 이미지에서 그것과 거의 일치하는 워드 프로세서 파일과 같은 문서 포맷으로 된 출력 파일을 생성할 수 있으며, 그 중에는 이미지처럼 문서 이외의 부분이 포함되어있어도 제대로 인식하는 것도 있다.
Categories
- OpticalCharacterRecognition:Example:JpgToPdf: OCR을 사용하여 JPEG파일 목록을 PDF로 변환하는 방법.
- tesseract
- Seven-segment display (Seven segment)
- Mathematical morphology (Morphological Transformations) - 모폴로지 연산
Basic pipeline
Ocropus-pipeline.png
Deep learning based
- Character-Region Awareness For Text detection (CRAFT)
- Github - deep-text-recognition-benchmark - Clova AI (Naver)
- Github - Convolutional Recurrent Neural Networks(CRNN) for Scene Text Recognition
- Attention OCR (Attention-based Extraction of Structured Information from Street View Imagery)
- SEE: Towards Semi-SupervisedEnd-to-End Scene Text Recognition
- STREET: End-to-End Interpretation of the French Street Name Signs Dataset
Projects
- Tesseract
- OpenALPR - 자동차 번호판.
- PyOCR
- EasyOCR - 다국어 OCR 엔진으로, 70여 개 이상의 언어를 지원합니다. PyTorch로 개발되어 있으며, 간단한 API를 제공합니다.
- Calamari
- OCRopus (OCRopy; ocropus3) - OCR과 관련된 일련의 도구들로 이루어진 프레임워크입니다. Tesseract OCR과 함께 사용되기도 합니다.
- Kraken - OCR 모델을 훈련하는 데 사용되는 파이썬 프레임워크입니다. 기존 모델을 불러오거나, 새로운 모델을 훈련할 수 있습니다.
- SwiftOCR
- macOCR - Get any text on your screen into your clipboard.
- PaddleOCR (바이두에서 개발한 오픈소스)
- Github - KoOCR-tensorflow - Korean OCR based on tensorflow deep-learning.
- Github - deep-text-recognition-benchmark - Text recognition (optical character recognition) with deep learning methods.
- Github - TextBoxes++: A Single-Shot Oriented Scene Text Detector
- Github - Total-Text-Dataset (Official site) - Total Text Dataset. It consists of 1555 images with more than 3 different text orientations: Horizontal, Multi-Oriented, and Curved, one of a kind.
- Github - MORAN: A Multi-Object Rectified Attention Network for Scene Text Recognition - MORAN: A Multi-Object Rectified Attention Network for Scene Text Recognition
- Github - SEE: Towards Semi-Supervised End-to-End Scene Text Recognition - Code for the AAAI 2018 publication "SEE: Towards Semi-Supervised End-to-End Scene Text Recognition"
- Github - PyTorch implementation of FOTS - FOTS Pytorch Implementation
- Github - vedastr is an open source scene text recognition toolbox based on PyTorch - A scene text recognition toolbox based on PyTorch
- Github - MASTER-PyTorch - Code for the paper "MASTER: Multi-Aspect Non-local Network for Scene Text Recognition" (Pattern Recognition 2021)
- Github - SynthTIGER: Synthetic Text Image Generator - Official implementation of SynthTIGER (Synthetic Text Image GEneratoR) ICDAR 2021 (clovaai)
- Github - Scene text recognition - Scene text detection and recognition based on Extremal Region(ER)
- A real-time scene text recognition algorithm. Our system is able to recognize text in unconstrain background. This algorithm is based on several papers, and was implemented in C/C++.
클라우드 서비스
- Google Cloud Vision
- AWS Textract
- Azure Document Intelligence (Form Recognizer)
- Naver Clova
- Upstage
OCR 서비스 비교평가 테이블
비교 타입 | Google Vision | AWS Textract | Azure Document Intelligence | Naver Clova | Upstage | PaddleOCR | ||
Open Source | O | O | X | X | X | X | X | O |
한글 인식 | 중 | 하 | 중상 | 최하(지원X) | 중상 | 상 | 상 | 중(추가 테스트 필요) |
영문 인식 | 상 | 하 | 상 | 상 | 상 | 상 | 상 | 상 |
표+글자 인식 | 하 | 하1 | 상 | 상(Only Eng) | 상 | 중상 | 상 | 중 |
속도 | 중 | 최하 | 최상 | 중상 | 중하 | 중 | 하 | |
특화 모델2 제공 | X | X | O | O | O (영수증, 명함, 보험/세금 서류, 신분증 등) | O(영수증, 명함, 사업자등록증 등) | O(영수증) | X |
Model Customization3 | O | O | X | X | O | O | X | O |
요금(1건)4 | 무료 | 무료 | $1.5 (매월 1000건까지 무료) | - | $0.01 (종량제: 매월 500페이지 무료) | 3원 (매월 300건 무료) | 3원 | 무료 |
API 사용 난이도 | 하 | 하 | 중상 | 중 | 하 | 하 | 하 | 중 |
고객 지원 | X | X | X | O | O | O | O | X |
confidence score 제공 | O | O | △ | O | O | O | O (문서별,단어별 각각 제공) | O |
총평 |
|
|
|
|
|
|
|
|
See also
Favorite site
- Wikipedia (en) Optical character recognition
- 잡동사니 탐구 - 참스터디 GodGo : 네이버 블로그 - (56편) 머신러닝 기초3 - 오픈소스를 활용한 OCR
- Github - 딥러닝을 활용한 한글문장 OCR 연구
- Github - Awesome OCR
- Github - awesome-deep-text-detection-recognition
- Github - Character Region Awareness for Text Detection #136
- Github - What Is Wrong With Scene Text Recognition Model Comparisons? Dataset and Model Analysis
- Github - awesome-deep-text-detection-recognition
Guide
- Deep Learning Based OCR for Text in the Wild
- A gentle introduction to OCR
- Building Custom Deep Learning Based OCR models 5
Article
References
-
유료 Enterprise 용 별도 존재 ↩
-
영수증, 사업자등록증 등 특정 문서를 학습한 OCR 모델로 보통 해당 양식의 이미지 정보가 미리 정의된 JSON 구조에 맞추어 리턴됨 ↩
-
Fine-Tune 이라고 보면 된다. “Train with My Own Data” 를 통해 모델을 미세조정할 수 있도록 기능 제공 ↩
-
1건, 일반 OCR, Base Plan 기준이며, 건수/목적에 따라 매우 상이(많은 서비스에서 특정 건까지는 무료로 제공하기도 함) ↩
-
Building_Custom_Deep_Learning_Based_OCR_models.pdf ↩