서론
SSAFY 미니 프로젝트를 진행하며 이미지를 분석해 텍스트를 추출하는 기능이 필요했다. 이를 공부하고 도입한 과정에 대해 정리해보고자 한다.
OCR이란?
Optical Character Recognition (광학 문자 인식)
텍스트 이미지를 기계(컴퓨터)가 읽을 수 있는 텍스트 포맷으로 변환하는 기술
카메라로 이미지를 인식하면 텍스트를 읽어오는 과정을 생각하면 된다. 일상에서 영수증이나 신분증, 메뉴판 등을 카메라로 인식하는 경우가 있다. 이때 OCR을 통해 이미지를 텍스트 문서로 변환하여 텍스트 데이터로 저장할 수 있다.
동작 원리
글자를 어떻게 인식하지?
- 이미지 획득
- 스캐너를 통해 문자를 이진 데이터로 변환
- 밝은 부분 → 배경 / 어두운 부분 → 글자(텍스트)
- 전처리
- 정렬 문제 해결을 위해 기울기 조절
- 이미지 얼룩 제거, 가장자리 부드럽게 조절
- 텍스트 상자 및 선 정리
- 다국어 OCR 기술용 스크립트 인식
- 텍스트 인식
- 패턴 매칭
- 문자 이미지를 분리하여 저장된 글리프와 비교
- 글리프: 표준 글자 이미지 (ㄱ, A, 1)
- 글꼴이 정해져 있는 문서를 스캔할 때 효율적
- 특징 추출
- 글자의 특징을 사용해 근사치에 가까운 글리프를 찾아냄
- 선, 닫힌 고리, 선 방향 및 선 교차
- ex. 'ㅇ', 'O'의 원부분 / 'ㅌ', 'T'의 가로 세로 교차점
- 패턴 매칭
- 후처리
- 추출된 텍스트 데이터를 기계가 읽을 수 있는 텍스트 문서(txt, docx)로 변환
위 과정은 aws에서 설명하는 OCR 동작 원리이다. 이는 글자 하나를 어떻게 인식하는가에 초점을 두고 있다.
그렇다면 문서 전체는?
초점을 바꿔서 문서 전체를 어떻게 처리하는지에 대해 OCR의 전체 작업 흐름을 알아보자. 이 과정에서 AI 기술이 사용된다.

- 이미지 전처리
- 이는 글자를 인식하는 과정과 동일
- 기울기 조절, 얼룩이나 노이즈 제거 등
- Text Detection
- 이미지에서 글자가 존재하는 영역 발견
- Object Detection 기술을 확장하여 사용
- Text Recognition
- 해당 영역의 글자가 무엇인지 판독하고, 이미지 내의 정확한 좌표 정보 전달
- Restructuring (재구성)
- 원본 이미지의 좌표와 구조에 따라 재배치
과정을 보면 알 수 있지만 OCR의 핵심은 Text Detection와 Text Recognition이다.
자세한 내용은 AI쪽으로 더 공부해보아야 할 거 같으니 프로젝트 진행을 위해 일단 미뤄두었다.
더 궁금한 사람들은 더 찾아보시길...
아래 링크는 도움이 될 거 같아 참고해 보라는 의미로 남긴다.
https://velog.io/@xpelqpdj0422/11.-OCR-%EA%B8%B0%EC%88%A0%EC%9D%98-%EA%B0%9C%EC%9A%94
11. OCR 기술의 개요
1. 들어가며 OCR = Text detection + Text recognition 이번 시간에는 딥러닝 기반의 OCR이 어떻게 이뤄지는지 알아볼 시간입니다. OCR은 크게 문자 영역을 검출하는 Text detection과 검출된 영역의 문자를인식하
velog.io
OCR API
- 무료 오픈소스
- 유료여도 무료 제한이 괜찮은 API
- 자주 사용하는 API
- 한글 인식이 높다는 API
| API | 유무료 | 참고 사항 |
| Tesseract | 무료 (오픈소스) | 한글 인식률이 별로라는 평 |
| EasyOCR | 무료 (오픈소스) | 사용하기 쉽다는 평 |
| PaddleOCR | 무료 (오픈소스) | |
| OCR4all | 무료 (오픈소스) | |
| Kakaobrain PORORO | 무료 (오픈소스) | 한글 인식률이 나쁘지 않다는 평 |
| Google Cloud Vision | 매월 1000건 무료 | |
| Azure Document Intelligence | 매월 500건 무료 | |
| Naver Clova | 매월 300건 무료 | 한글 인식률이 높다는 평 |
선정
프로젝트 기간이 있기에 하나씩 PoC를 하기엔 무리가 있다고 판단하여, 블로그와 Gemini DeepSearch를 통해 오픈소스 정보를 조사하여 API를 선정했다.
무료이면서 한글 기능이 괜찮은 Kakaobarin PORORO로 진행진행해보고 무리가 있다면 Naver Clova로 변경
PORORO를 진행해 보려고 하니 환경 제약에 대한 문제가 컸다. 본인의 경우 Docker를 통해 실행해보고자 했으나 좀처럼 진행이 안되어 하루종일 삽질했고, 더이상 지체할 수 없어 우선 Naver Clova를 사용하기로 했다. 추후 시간이 된다면 재도전해볼 생각이다.
Naver Clova OCR
CLOVA OCR은 전송한 문서나 이미지를 인식하여 사용자가 지정한 영역의 텍스트와 데이터를 정확하게 추출하는 네이버 클라우드 플랫폼의 서비스입니다. OCR 분야 가장 권위있는 글로벌 챌린지 ICDAR2019 4개 분야에서 1위, CVPR 및 ICCV 국제학회 논문 선정 등 독보적 기술력이 집약된 문자에 대한 높은 인식률을 자랑하는 CLOVA OCR은 미리 등록한 템플릿과의 유사도를 통해 사용자의 개입 없이 문서 자동 분류가 가능하기 때문에 효과적인 업무 워크플로우 설계에도 활용이 가능합니다. 또한 Papago와 같은 서비스와의 연계를 통해 차별화된 서비스를 제공할 수 있습니다.
제공 기능
- 이미지나 문서에서 인식 결과 추출
- 문서 처리 자동화와 액션 연동
- 인식 결과 검증 프로세스
- Restful API 제공
더 자세한 내용은 링크를 참고하길 바란다. https://guide.ncloud-docs.com/docs/clovaocr-overview
세팅
우선 Clova OCR을 사용하기 위해 Clova OCR 사용과 API Gateway 사용에 대해 신청해야 한다.
API Gateway를 신청하고 시작하면 중간에 막히지 않을 것이다. 뒤에 도메인 생성하는 과정에서 API Gateway가 필요하기에 신청해야 한다. 진행하다 막힐 때 신청해도 문제는 없다.
Clova 신청
https://www.ncloud.com/v2/product/aiService/ocr
NAVER CLOUD PLATFORM
cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification
www.ncloud.com
아래 링크에는 자세한 가이드가 나와있으며, 가이드 내용을 그대로 가져왔으니 링크를 들어가서 확인해도 되고 아래 내용대로 따라해도 된다. 해당 과정이 자세히 나와있기에 추가 설명은 생략한다.
https://guide.ncloud-docs.com/docs/clovaocr-start#이용-신청
- 네이버 클라우드 플랫폼 콘솔에 접속해 주십시오.
- Region 메뉴에서 이용 중인 리전을 클릭하여 선택해 주십시오.
- Platform 메뉴에서 VPC와 Classic 가운데 클릭하여 선택해 주십시오.
- Services > AI Services > CLOVA OCR 메뉴를 차례대로 클릭해 주십시오.
- Subscription 메뉴를 클릭해 주십시오.
- [이용 신청] 버튼을 클릭해 주십시오.
- 서비스 이용신청 팝업 창이 나타나면 CLOVA OCR 서비스 이용약관을 읽고 동의합니다. 를 클릭해 주십시오.
- [상품 이용 신청] 버튼을 클릭해 주십시오.
API Gateway 신청
https://www.ncloud.com/v2/product/applicationService/apiGateway
NAVER CLOUD PLATFORM
cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification
www.ncloud.com
OCR과 동일하게 콘솔에 접해서 Services > Application Services > API Gateway로 접속할 수 있다.
OCR 생성 및 연동
이제 OCR로 접속해 도메인을 생성해보자.

현재 진행하고 있는 프로젝트의 명인 'WattToDo'라고 지정했다. 한국어를 지원해야 하기에 한국어를 선택해서 생성해줬다.
생성하고 난 뒤에 오른쪽 끝에 옵션을 보면 API Gateway 연동과 데모 버튼이 있다.

데모 버튼을 통해 잘 동작하는지 먼저 확인해봤다.

잘 동작한다...! 이미지는 https://youtu.be/Zn7TRPo6Qww 에 나온 문자 내용을 가지고 진행했다.
이제 본격적으로 API Gateway 연동을 해보자.

Secret Key는 새로 발급받아서 사용하면 된다.
API Gateway 자동 연동 버튼을 누르면 아까 신청한 API Gateway를 통해 알아서 생성된다. 이는 API Gateway 콘솔에서도 확인 가능하다.
이렇게 하면 끝!
테스트
powershell에서 테스트를 진행해 봤다.
PS C:\Users> $response = Invoke-RestMethod -Uri $ocrUrl -Method Post -Headers $headers -Body $body
PS C:\Users> $response.images[0].fields | Select-Object inferText, inferConfidence | Format-Table
inferText inferConfidence
--------- ---------------
환경부 0.9999
전기차 1.0
충전소 0.9994
[Web발신] 0.999
서울올림픽공원 1.0
남2문주차장 0.9999
충전 0.9998
소 1.0
ME19X403 0.9991
충전기 0.9997
충전이 0.9999
완료 0.9999
되었습니다. 1.0
충전 0.9997
완료 0.9999
후 0.9999
차량 1.0
미 0.9998
이동시 1.0
「환경 0.9992
친화적 1.0
자동차의 0.9986
개발 1.0
및 0.9999
보급 0.9602
촉진 0.9997
에 1.0
관한 0.9991
법률 0.9969
제16조 0.9999
1항」에 0.9966
의거하 1.0
여 1.0
과태료가 1.0
부과될 0.9997
수 1.0
있으니 1.0
신속히 1.0
이동하여 1.0
주시기 1.0
바랍니다. 1.0
==충전정보== 0.9997
충전량 : 0.9933
12.48KWh 0.9953
충전금액 0.9989
: 0.9975
4334원 0.9997
충전시간 : 0.9176
16:35 0.9999
결과값이 잘 반환되는 것을 확인할 수 있다.
참고
https://aws.amazon.com/ko/what-is/ocr/
https://devocean.sk.com/blog/techBoardDetail.do?ID=165524&boardType=techBlog
'Study > AI' 카테고리의 다른 글
| [AI]vscode에서 Playwright, Notion 사용해보기(Feat. MCP) (1) | 2025.09.01 |
|---|---|
| [Gemini]vscode에서 Gemini로 코드 작성해보기 (0) | 2025.08.27 |
| [AI][ML]얼굴 검출 (0) | 2022.08.15 |
| [AI][ML]앙상블(Ensemble) (0) | 2022.08.12 |
| [AI][ML]랜덤 포레스트(Random Forest) (0) | 2022.08.12 |