OCR 찾아 삼만리

시온·2023년 8월 12일
1
post-thumbnail

최근에 갑작스럽게 시작하게 된 프로젝트의 백엔드를 담당하면서 글자 인식에 대해 자세히 알아보게 되었다. 프로젝트 주제 자체는 굉장히 단순한데, 바로 영수증을 찍으면 자동으로 거래 날짜, 가게 이름, 결제 금액 등을 구글 스프레드시트에 작성하는 서비스이다.

작년에 교회에서 회계를 하면서 모든 것이 아날로그 (수기로 장부 작성, 실물 영수증 보관 등) 인 것에 너무나 감동을 먹은 나머지 현재, 그리고 미래의 회계를 위해 자동화 서비스를 생각하게 되었다.

웹 개발도 진행중에 있지만, 무엇보다 나에게 중요한 것은 바로 영수증 사진에서 글자를 어떻게 추출할 것인가였다.

📄 OCR?

Optical Character Recognition (OCR), 광학 문자 인식 - 나무위키

OCR은 이미지의 글자인식하여 기계가 읽을 수 있는 텍스트 데이터치환하는 과정이다. 이미지 파일에서는 텍스트 편집기를 사용하여 단어를 편집, 검색하거나 단어 수를 계산할 수 없다. 하지만 OCR을 사용하면 이미지를 텍스트 문서로 변환하여 내용을 텍스트 데이터로 저장할 수 있다.

🏷️ OCR의 종류를 알아보자

OCR은 가장 대표적인 인공지능 모델 중 하나로, 대부분의 대형 클라우드 플랫폼에서 제공되고 있다.

1. 네이버 CLOVA OCR

CLOVA OCR은 OCR 분야에서 가장 권위 있는 글로벌 챌린지인 ICDAR2019 4개 분야에서 1위, CVPR 및 ICCV 국제 학회 논문에 선정되는 등 독보적인 기술력을 자랑합니다. 특히 인식 대상의 레이아웃을 분석하고 글자를 읽는 순서와 방향을 추정하여 문자를 인식할 수 있습니다. 또한 곡선으로 배열되거나 기울어진 문자, 필기체 등도 인식할 수 있어 정확한 데이터를 추출할 수 있습니다. - CLOVA

국내, 특히 한글을 인식하는 OCR 중 가장 탁월한 성능을 보여주는 모델이다. 여러 모델을 써 보았지만 한글 인식에 있어서는 따라올 서비스가 없는 듯 했다. 역시 대기업..
특징으로는, 내 프로젝트에 가장 필요한 영수증 전용 템플릿이 존재한다! 사실상 영수증 OCR API를 쓴다면 모든 것이 한 번에 해결되는 것..
하지만, 기본 OCR이 월 무료 100건, 영수증 OCR은 무조건 유료라 일단은 보류.

2. Tesseract (테서랙트)


이 테서랙트 아닙니다

테서랙트는 다양한 운영 체제를 위한 OCR 엔진이다. 2006년부터 Google에서 개발을 후원했다. - 위키백과

구글에서 후원중인, 가장 유명한 오픈소스 OCR 되시겠다. 2023/08/13 기준으로 현재 5.3.2 버전이 출시되었다. 리눅스, macOS, Windows 등에 설치 가능하며 영어 뿐 아니라 다양한 언어 (한국어 포함!) 를 지원한다.
..다만 인식률이 굉장히 저조한 편이다.
자체적으로 학습을 시키지 않는 이상, 일반적으로 사용하기 어려울 정도로 인식을 하지 못한다. 아니면 그냥 내가 못한 걸 수도
JPG 이미지 기준 OCR 처리 속도가 굉장히 빠른 편이다.

3. EasyOCR

EasyOCR은 문자 영역 인식(Detection), 문자 인식(Recognition)을 손쉽게 수행 할 수 있도록 하는 Python 패키지 입니다. EasyOCR은 구현이 간단하고 매우 직관적입니다. 현재 80개 이상의 언어를 지원하고 있으며, 꾸준히 Release 되고 있습니다. - 출처

굉장히 쉬운 설치법과 사용법을 가진, 이름 그대로 간단한 OCR이다.

pip install easyocr

pip으로 한줄이면 설치가 가능하다..! 사용법도 간단함

import easyocr
reader = easyocr.Reader(['ch_sim','en']) # this needs to run only once to load the model into memory
result = reader.readtext('chinese.jpg')

이렇게 쓰고 실행하면 결과가 나온다..
간단한 거에 비해 생각보다 결과가 좋다. Tesseract보다 한글 인식에 강한듯.

EasyOCR은 네이버 Clova AI 연구팀에서 발표한 CRAFT 모델을 사용하였다. 한글 인식이 괜찮은 것도 이것 때문일지도?

단점이라면, 로딩 시간이 길다. 대신 간단하니 봐주도록 하자.

4. 카카오브레인 PORORO


이 뽀로로 아닙니다

PORORO는 다양한 한글 자연어 처리를 위해 통합된 형태의 플랫폼입니다.

pororo performs Natural Language Processing and Speech-related tasks. It is easy to solve various subtasks in the natural language and speech processing field by simply passing the task name. - pororo

카카오브레인에서 개발한 자연어 처리 플랫폼이다. OCR뿐 아니라 음성 인식 등 자연어와 관련된 여러 입력을 처리한다.
EasyOCR과 비슷하게 사용이 비교적 쉬운 편이다. 사실 PORORO에도 EasyOCR과 마찬가지로 CRAFT 모델이 들어가 있다.
EasyOCR과 비교해서는 조금 더 좋은 듯 했다.

실제 영수증 내용:

EasyCheck
가맹점명, 가맹점주소가 실제와 다른 경우 신고안내 (포상금 10만원 지급)

PORORO:

가맹점명. 가맹점주소가 실제와 다른 Easy(heck 경우 신고안내 (포상금 10만원 지급)

EasyOCR:

기맨점명 , 가볍점 주소기 실제와
다른
casyChsck
경우 신고안내
(모상금
10만원
지급)

..?

조금 많이 좋은 걸로 하자..

⛱️ 결론

한글, 영수증 인식에서는 성능 면에서는 네이버 CLOVA가 독보적으로 좋았다.

네이버 CLOVA OCR은 기본 성능도 굉장히 좋을 뿐 더러, 영수증 전용 템플릿도 있다.
하지만 단 하나의 단점, 가격이 걸림돌이다.
일반 OCR API은 월 100회 무료, 그 이상은 호출수 당 3원이 발생한다.
하지만 영수증 OCR API는 기본 300회 호출 요금 18000원, 그 이상은 호출수 당 100원이 발생한다. 일반 OCR은 몰라도 영수증 OCR은 부담이 되는게 사실. 그리고 오픈소스 OCR을 가지고 직접 나만의 결과물을 만들고 싶었다.

결국 나는 카카오브레인 PORORO를 선택했다. 일단 당분간은 PORORO를 붙잡고 어떻게든 만들어보려고 한다. 진짜 안되면 CLOVA 써야지..

profile
끊임없이 성장중

5개의 댓글

comment-user-thumbnail
2023년 8월 12일

감사합니다. 이런 정보를 나눠주셔서 좋아요.

답글 달기
comment-user-thumbnail
2023년 12월 13일

진짜 너무 비싸네요. PORORO 는 설치부터 난관....

1개의 답글
comment-user-thumbnail
2024년 1월 26일

pororo ocr 써보려고 하는데 선행으로 torch 1.6.0 버전 인스톨이 어렵네요 (mac os)
혹시 이 부분 알고 계신 정보 있으신가요..?

1개의 답글