EasyOCR 라이브러리 사용

박규태·2022년 2월 11일
0
post-thumbnail

작업 개요

최근 회사에서 고도화 작업 중인 축산정보경영시스템(MPS) 내에서 원료육의 매입 문서를 OCR를 통해 자동 저장 되는 기능을 개발하고 있다.

회사 내에서 계속 해서 딥러닝 혹은 AI 관련 모델링을 개발해 나아가야하지만 , OCR 과 같이 학습 데이터 혹은 언어 별로 구분이 필요한 모델은 인력과 시간 투입의 가성비가 좋지 않아 라이브러리를 찾아 보게 되었다.

기존에는 teserract 라이브러리를 사용하여 , 해당 기능을 제작하였다.

하지만 서버 이전 작업 및 여러가지 정답률 관련 이슈로 인해 다른 라이브러리를 찾아 보다가 , 우연히 EasyOCR이란것을 알게 되었다.

다음 링크는 2021년에

“Tesseract” vs “Keras-OCR” vs “EasyOCR”

이라는 주제로 , 비교한 블로그이다. 참고 바람.

우선 EasyOCR에 대해 알아보자

EasyOCR Github 공식 링크 : github.com/JaidedAI/EasyOCR

우선 EasyOCR에 대해서 설명을 적어봅니다

  1. EasyOCR은 OCR 오픈소스로 Detection부분과 Recognition부분으로 나누어져 있으며 Text Detection은 CRAFT를 사용하고 Recognition은 CRNN한다.

  2. Framework는 모든 소스가 pytorch로 작성되어있습니다. pytorch는 tensorflow처럼 딥러닝을 위한 프레임워크로 tensorflow보다 좀 더 pythonic하게 코드를 작성할 수 있다.

  3. OCR 결과, 검출된 텍스트의 바운딩 박스 좌표를 얻을 수 있다

  4. 80종 이상이 지원됩니다. 한번 실행에 여러 언어 인식 제공

EasyOCR 라이브러리 설치 및 사용법

이제 설치를 해보자.

간단하다.

pip3 install easyocr

서버에서 python을 실행하여

[root@cobuy-1035 develop]# python3
Python 3.6.8 (default, Aug 7 2019, 17:28:10)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.

라이브러리를 임폴트 해본다.

import easyocr

오류가 뜨지 않는 다면 정상적으로 설치 된것!

다음 이미지를 easyocr을 통해 실행 시켜 보자.

소스는 다음과 같다.

import easyocr

reader = easyocr.Reader(['ko']) # need to run only once to load model into memory
result = reader.readtext('이미지경로')

print(result)

에러가 뜬다.

Segmentation fault (core dumped)

Stack Overflow 검색 해보니 , 라이브러리 의존성 때문에 발생한 에러였다.

https://stackoverflow.com/questions/70567344/easyocr-segmentation-fault-core-dumped

라이브러리 의존성 수정후

pip install opencv-python-headless==4.5.4.60

해당 python 파일을 실행해보니 ,

다음과 같이 문자 OCR이 잘된다!

Tesseract 보다 결과값이 더 정교한듯 하다.

이제 기능을 구현해 보도록 하자!

OCR DNBSOFT API 제작

추후에 OCR 관련 모듈을 다른 기능에도 적용 할 수 있도록 아예 OCR API를 만들어 버렸다.

빈칸의 APIID 와 APIKEY는 회사에서 MPS 솔루션 별로 제공되는 자체 API KEY값이다.

APIID , APIKEY , ImagePath로 받은 필드 값을 통해

API Key 검증을 한후 , Curl을 통해 ImagePath상에 있는 이미지를 서버에 임시 저장한다.

해당 이미지를 php상의 exec 명령어를 통해 python을 실행하여 , 데이터를 리턴해주는 형식으로 설계 하였다.

기능 제작

OCR을 통해 이미지를 OCR로 텍스트를 감지 한다.

해당 이미지가 도축 검사 증명서 , 등급 판정서 인지 검출 하고 이력번호 또한 검출 하여 실제 데이터와 매칭한다.

매칭한 원료육들은 다음과 같이 문서 필드에 아이콘이 보이게된다.

해당 문서 아이콘 클릭시!

연결된 문서를 다운로드 할 수 있도록 모달 창이 뜬다.

작업 끝.

참고 블로그 및 출처

profile
감성 개발자

1개의 댓글

comment-user-thumbnail
2022년 8월 3일

import easyocr .... 이 코드를 어디서 실행해야하나요?
vscode에서 깃허브에 있는 오픈소스 easyocr 파일을 열었는데 여기서 실행이 안되는건가요?
아나콘다를 설치하고 거기서 실행하는걸까요?
어디서 코드를 입력하고 실행하는건지 알려주시면 감사하겠습니다!

답글 달기