Anaconda로 일본어 OCR 환경 만들기(tesseract+pyocr)

개요



Anaconda만으로 OCR 환경 구축
어려운 일을 모르기 때문에 어쨌든 간단한 방법을 찾습니다.

환경



Windows10
아나콘다
파이썬 3.6
Spyder 4.1.2

tesseract와 pyocr 정보



조사하면 Python에서 OCR한다면 testeract + pyocr의 방법이있을 것 같습니다.
이 방법을 시도하기로 결정했습니다.

tesseract



현재 Google이 개발하고 있는 OCR(광학 문자 인식)의 엔진
v4.0 이후에는 기계 학습의 LSTM 기반이므로,
인식률을 고려하면 최신 버전이 좋을 것 같습니다.

pyocr



파이썬 용 OCR 툴 래퍼
tesseract에도 대응

참고



Anaconda만으로 환경을 구축하고 Python + OCR을 시도합니다.
htps : // 코 m / 안산시 / ms / 9 예 94 아후 CD74 33159

참고로했습니다만, 환경 차이로부터 조금 빠져 버렸습니다

tesseract 설치



여러 가지 방법이있을 것 같지만, 이번에는 Anaconda로 설치합니다.

conda-forge 저장소에 tesseract가 있습니다.
h tps://아나곤다. 오 rg / 혼다 훗 r 게 / 테세라 ct

솔직하게 설치 (2020/4/14 현재는 v4.1.1)conda install -c conda-forge tesseract

pyocr 설치



이곳은 brianjmcguirk라는 별로 보이지 않는 리포지토리 ...?
h tps://아나곤다. 오 rg / b 리안 jmc 구이 rk / 피오 cr

여기도 솔직하게 설치합니다 (이쪽은 현재 v0.5)conda install -c brianjmcguirk pyocr

공식 페이지의 코드를 실행해 봅니다.



상기 기사를 참고로 공식 페이지의 코드로 확인한다
from PIL import Image
import sys

import pyocr
import pyocr.builders

tools = pyocr.get_available_tools()
if len(tools) == 0:
    print("No OCR tool found")
    sys.exit(1)
# The tools are returned in the recommended order of usage
tool = tools[0]
print("Will use tool '%s'" % (tool.get_name()))
# Ex: Will use tool 'libtesseract'

langs = tool.get_available_languages()
print("Available languages: %s" % ", ".join(langs))
lang = langs[0]
print("Will use lang '%s'" % (lang))
# Ex: Will use lang 'fra'
# Note that languages are NOT sorted in any way. Please refer
# to the system locale settings for the default language
# to use.

그리고 실행 결과는

실행 결과
Will use tool 'Tesseract (sh)'
Available languages: eng, osd
Will use lang 'eng'

됩니다.
쓰여진 대로 영어만으로 일본어는 아직 OCR할 수 없습니다.

일본어 OCR 환경 만들기



자, 일본어 OCR을 할 수 있습니다.

학습된 데이터 다운로드



여기에서 jpn.traineddata를 다운로드합니다.
옛날과 장소가 바뀌는 것 같아서 찾는데 조금 고생했습니다.
htps : // 기주 b. 이 m/테세라 ct-오 cr/테드 s도 c/bぉb/마s테 r/다타후후 s. md

version에 따라 데이터가 다르기 때문에 주의! (한번 실수했다…)

적당한 장소에 놓다



여기도 조금 귀찮아…
내 환경의 경우
/Anaconda3/envs/(환경 이름)/Library/bin/tessdata
아래에 놓으면 읽을 수있었습니다.
(이미 eng.traineddata, osd.traineddata가 있습니다)

(환경 이름) 아래에도 testdata 디렉토리가 있지만,
이쪽은 읽으러 가지 않는 모양

재실행



다시 공식 페이지 코드 실행

실행 결과
Will use tool 'Tesseract (sh)'
Available languages: eng, jpn, osd
Will use lang 'eng'

제대로 「jpn」도 추가되었습니다
다음은 일본어를 읽어 보겠습니다.

↓ 테스트용 이미지

txt = tool.image_to_string(
    Image.open('test.png'),
    lang="jpn",
    builder=pyocr.builders.TextBuilder(tesseract_layout=6)
)
print( txt )

실행 결과
raise TesseractError(status, errors)
pyocr.error.TesseractError: (1, b"Error, unknown command line argument '-psm'\r\n")

예기치 않은 오류 발생…
이것도 비슷한 에러가 나온 분의 기사가 참고가 되었습니다
h tps : // 오즈. 이 m/py 텐-오 cr. HTML

tesseract.py 및 builders.py
"-psm"을 "--psm"으로 다시 작성해야했습니다.

다시 실행




txt = tool.image_to_string(
    Image.open('test.png'),
    lang="jpn",
    builder=pyocr.builders.TextBuilder(tesseract_layout=6)
)
print( txt )

실행 결과
     

할 수 있었다!

요약



Anaconda에서도 환경을 만들 수 있지만 생각보다 정보가 적기 때문에 상당히 빠졌습니다.
그런데 OCR을 사용하여 총을 놀자.

보충



파이썬 버전이 3.7이면 pyocr을 사용할 수 없다는 정보도 있습니다.
3.6에서 환경을 만드는 것이 무난하다.

좋은 웹페이지 즐겨찾기