
OCR (Optical Character Recognition)은 이미지에 포함된 문자를 컴퓨터가 읽을 수 있는 텍스트 데이터로 변환하는 기술인데요. 많은 문서 처리 기관이나 서비스 업체에서 활용하고 있는 분야입니다.
OCR의 작동원리는 다음과 같은 순서를 거칩니다.
1. 이미지 전처리 (Pre-processing): 먼저, 입력된 이미지의 품질을 개선하여 문자 인식률을 높이는 작업을 수행합니다. 이미지의 기울어진 각도를 바로잡고, 불필요한 노이즈를 제거하며, 명암을 조절하여 문자가 더욱 선명하게 보이도록 만듭니다. 이 과정을 통해 문자와 배경이 명확하게 구분됩니다.
2. 문자 인식 (Character Recognition): 전처리가 완료된 이미지에서 문자 영역을 찾아냅니다. 그 후, 인공지능(AI)과 머신러닝 알고리즘을 사용하여 각 문자의 특징을 분석하고 어떤 글자인지 판독합니다. 과거에는 저장된 글꼴 패턴과 일일이 대조하는 방식을 사용했지만, 최근에는 딥러닝 기술을 활용하여 다양한 글꼴이나 손글씨까지도 높은 정확도로 인식할 수 있게 되었습니다.
3. 후처리 (Post-processing): 마지막으로, 인식된 텍스트의 오류를 수정하고 자연스러운 문장으로 다듬는 과정을 거칩니다. 예를 들어, 문맥에 맞지 않는 단어를 교정하거나, 특수문자나 표의 형식을 올바르게 변환하여 최종적으로 사용자가 활용하기 좋은 형태의 텍스트 데이터를 생성합니다.
이미지 처리에 활용할 수 있는 라이브러리는 다음과 같이 있습니다.
- OpenCV
- 이미지의 기울기를 맞추거나 노이즈를 제거하는 등 고성능 전처리 작업에 사용
- Pillow(PIL)
- 이미지 파일을 읽고 자르는 등 기본적인 조작에 사용
인공지능 분야인 문자인식 (Character Reconition) 파트에 대해 더 기술적으로 접근하자면 다음과 같습니다.
- 딥러닝 툴 선택 - 딥러닝 모델 CRNN을 직접 설계하고 훈련 시킬 때 사용. 모델의 구조를 만들고, 학습 데이터를 입력하여 모델을 똑똑하게 만듭니다.
- TensorFlow (모델 학습&제작 - 고난이도)
- PyTorch (모델 학습&제작- 고난이도)
- OCR 오픈소스 모델 (활용 - 초/중급 난이도) - Tesseract, EasyOCR, PaddleOCR, DeepOCR
- 라벨링 작업 - 딥러닝 모델을 훈련시키기 위해 정답 데이터가 필요한데 다음 툴들을 사용해 이미지 속 문자의 위치와 실제 텍스트 값을 입력하는 라벨링 작업을 수행해 오답/정답 처리를 수행하여 학습하게 합니다.
- LabelMe
- LabelImg
OCR 개발 과정 절차
1. 데이터 수집 및 라벨링: 다양한 글꼴, 배경, 화질의 이미지 데이터를 모으고, LabelMe와 같은 툴로 이미지 속 글자의 위치와 내용을 정답지로 만듭니다.
2. 이미지 전처리: 수집한 이미지들을 OpenCV를 사용해 노이즈를 줄이고 기울기를 보정하는 등 모델이 인식하기 좋은 형태로 가공합니다.
3. 모델 설계 및 훈련: TensorFlow나 PyTorch를 이용해 CRNN 같은 딥러닝 모델을 설계합니다. 이후 준비된 데이터셋으로 모델이 이미지와 텍스트의 관계를 학습하도록 훈련시킵니다.
4. 성능 평가 및 모델 개선: 훈련된 모델의 정확도를 평가하고, 예측이 틀린 케이스를 분석하여 모델 구조를 변경하거나 더 많은 데이터를 학습시켜 성능을 개선합니다.
5. 서비스 적용 (API 개발): 완성된 OCR 모델을 다른 서비스에서도 쉽게 사용할 수 있도록 API 형태로 만듭니다.
OCR 오픈 소스의 단점은 특정 문서나 손글 씨 등으로는 정확도가 낮게 나올 수 있으므로 전문적인 OCR을 만들기 위해 딥러닝 모델을 직접 설계하고 훈련시키는 과정이 필수적 입니다.
'AI-인공지능' 카테고리의 다른 글
| APS / ERP시스템 정리 (7) | 2025.08.09 |
|---|