[OCR] 오픈소스 한글 등 (거의 모든 언어) 이미지에서 텍스트 변환 Develop Tip

OCR 이라는 단어는 아마도 상당히 오래전부터 나온 용어로 생각됩니다.
어쩌면 JPEG, PNG 등등의 이미지 디지털 포맷이 나오면서 부터 계속해서
글자인식이란 요구가 계속 있어왔다고 보여집니다.

파이썬으로 한글 OCR이 있는가 살펴보다가,
오픈소스로 tesseract (뜻:4차원육면체) 라는 것이 있다는 것을 알았습니다.


간단한 역사를 살펴보니, 휴렛패커드 (Hewlett-Packard Co) 사의 여러 지역에 있는 Lab에서
1985~1994 동안 연구를 하였고, 1996년에 윈도우로 포팅되었고, 1998년에 C++ 화 되었다고
나오네요.

이를 2005년에 HP가 오픈소스로 변경하였고, 2006년 부터는 구글에서 개발됩니다.

올해(2017) 6월1일에 3.05에서 4.0 알파버전이 나왔는데
도움말을 보니 4.0에서 한글이 좀더 제대로 OCR를 하기 시작하였다고 하네요.
(아래에 버전 3과 4의 차이를 보여드리겠습니다)

맥에서 작업을 하는데,

$ brew install tesseract 

(주의할 점은 한글 데이터를 3.05로 받아 돌려야 합니다)


라고 설치를 하면, tesseract 라는 실행파일이 나옵니다.

하지만 현재는 버전 3.05가 설치됩니다.
4를 설치하려다가 docker로 문제를 풀어 보았습니다.

우선 다음의 Dockerfile 을 만듦니다.

$ cat Dockerfile
FROM ubuntu:16.04
MAINTAINER MoonChang Chae <mcchae@gmail.com>

RUN echo "deb http://ppa.launchpad.net/alex-p/tesseract-ocr/ubuntu xenial main\ndeb-src http://ppa.launchpad.net/alex-p/tesseract-ocr/ubuntu xenial main " >> /etc/apt/sources.list \
    && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CEF9E52D \
    && apt-get update \
    && apt-get install tesseract-ocr -y \
    && apt-get install tesseract-ocr-kor -y \
    && apt-get install tesseract-ocr-jpn -y

CMD ["tesseract"]

하단에 tesseract-ocr-kor 와 같은 패키지로 언어별 데이터팩을 설치할 수 있습니다.
(100여개 언어를 지원한다니 ... 역시 구글입니다)

이제 다음과 같이 docker를 만들었습니다.

$ docker build --tag mcchae/tesseract .
(mcchae 대신 자신의 Docker Hub 계정명을 넣으셔도 되고 그냥 자신의 id로 대치해도 됩니다)

이제 아래와 같은 한글 이미지를 이용하여 돌려 봅니다.


위의 이미지가 ocr_test_kor.png 이라고 저장되었습니다.


이제 우선 맥에서 설치한 버전3으로 돌려봅니다.

$ tesseract -v
tesseract 3.05.01
 leptonica-1.74.4
  libjpeg 9b : libpng 1.6.32 : libtiff 4.0.8 : zlib 1.2.8

$ tesseract ocr_test_kor.png stdout -l kor
흔주식 대박 논료뻬 핍싸였던 이유정 헌볍재판관 후보폈까 1일 폈꾼진 ^꾼토|했다 지뇨찔 8일
지명 이후 24일 묘괌0|다 궂관관급 이상 인사 중에선 안경햄볍무-부)~조대엽(고용노동부) 전
장관 후보자 김기정 전 국7}안보실 2궂}장" 박7 |영 전 과학7 |술정보통신부

과학7 |술혁신본부그츠뻬 이어 드꾼섯 번째 늬띠뿐뇨

이 후보폈괌는 이날 입장문욜 통해 쪄의 문저|가 임명권폈괌와 헌볍재판소에 부담으로
작용눔}는 것은 제가 원듐논 닌괌가 아니며′ 제가 생깁탕훔는 헌볍재판관으로서 역힐도
아니끈괌고 표챤단했대며 썽괌퇴 의^}를 분괌혔다 그러면서 “주식 투폈넵 표뮌한 의흑과 논료뻬
공직 후보×꾼로^1의 높은 도덕성욜 기대듐눈 국민의 눈높이에 맞지 잃'았드빤는 점은
부인눔끼 어렵대고 했다

이 후보폈빤는 고우|혐이 뜨괌르는 일부 코스닥 종목어| 단7|간 투폈빼 12억원이 넘는 고수익욜
올린 게 드러나 논료삐 됐다 온라인에선 주식 투폈빤의 귀재인 워린 버팟에 빗대 。유정
버팟'이란 별명이 붙기도 했다 특히 。7}짜 백수오' 끄빤문이 일었던 내츄렬엔도텍 주식의
경우 이 후보폈꾼가 근무했던 볍무볍인 원에 ^빤건욜 의뢰한 적이 았고~ 상장 57|1월 전에
매수했드꾼는 점에서 의흑이 집중됐^다

뭔가 이상한 결과입니다.

이제 위에서 만든 docker의 tesseract 버전4로 돌린 결과입니다.

docker run -it --rm mcchae/tesseract tesseract -v
tesseract 4.00.00alpha
 leptonica-1.74.4
  libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 1.4.2) : libpng 1.2.54 : libtiff 4.0.6 : zlib 1.2.8 : libwebp 0.4.4 : libopenjp2 2.1.0

 Found AVX2
 Found AVX
 Found SSE

$ docker run -it --rm -v ${PWD}/ocr_test_kor.png:/tmp/ocr.png mcchae/tesseract tesseract /tmp/ocr.png stdout -l kor

주 식 대 박 논 란 에 휩 싸 였던 이유정 헌 법 재판관 후 보 자 가 1 일 자진 사 퇴 했 다 . 지난달 8 일
지명 이후 24 일 만 이 다 . 차관급 이상 인사 중에선 안 경 환 ( 법 무 부 )- 조 대 엽 ( 고 용 노동부) 전
장 관 후보자, 김 기 정전 국 가 안 보 실 2 차 장, 박 기 영 전 과 학 기 술 정 보 통 신부

과 학 기 술 혁 신 본 부 장 에 이어 다섯 번 째 낙 마 다 .

이 후 보 자 는 이날 입 장 문 을 통해 " 저 의 문 제 가 임 명 권 자 와 헌 법 재 판 소 에 부 담 으로

작 용 하는 것 은 제 가 원 하는 바가 아니며, 제가 생 각 하는 헌 법 재 판 관 으로서 역 할 도

아 니 라 고 판 단 했 다 " 며 사퇴 의 사 를 밝 혔 다 . 그러면서 ` 주 식 투 자 와 관련한 의 혹 과 논 란 이
공직 후 보 자 로서의 높은 도 덕 성 을 기 대 하는 국 민 의 눈 높 이 에 맞지 않았다는 점 은

부 인 하기 어 렵 다 " 고 했 다 .

이 후 보 자 는 고 위 험 이 따르는 일부 코 스 닥 종 목 에 단기간 투 자 해 12 억 원이 넘 는 고 수 익 을
올 린 게 드 러 나 논 란 이 됐다 온 라 인 에선 주식 투 자 의 귀 재 인 위 린 버 핏 에 빗대 ` 유 정

버 팟 이란 별 명 이 붙 기 도 했 다 . 특히 ` 가 짜 백 수 오 파 문 이 일 었던 내 츄 럴 엔 도 텍 주 식 의
경우 이 후 보 자 가 근 무 했던 법 무 법인 원 에 사 건 을 의 뢰 한적이 있고, 상장 5 개 월 전에

매 수 했다는 점 에서 의 혹 이 집 중 됐다,

라고 결과가 나왔습니다.

띄어쓰기 등은 다시 살펴봐야 되겠지만,
얼추 이제는 거의 정확하게 잘 나오네요.


pytesseract 라는 파이썬 모듈이 있는데,
tesseract 실행파일을 wrapping 시킨 것이네요.


어느 분께는 도움이 되셨기를...



핑백

  • 지훈현서 : [Windows 7] Tesseract OCR 사용해 보기 2018-02-01 17:31:45 #

    ... 지난번에 Docker로 Tesseract라는 OCR을 사용해보는 것을 살펴본 적이 있습니다. 그런데 윈도우7에서 필요에 따라 위의 OCR을 돌려보려고 Docker Toolbox를 설치하고돌려보았더니 오류가 발 ... more

덧글

  • 나인테일 2017/09/02 01:22 # 답글

    OCR은 ABBYY나 어도비 정도 되지 않으면 상종 못할 정도로 저질인 경우가 많죠.
  • 지훈현서아빠 2017/09/02 17:39 #

    알고있습니다만 오픈소스 중에 찾고 있는 것이었습니다.
  • 카스 2018/03/24 11:29 # 삭제 답글

    옵션에서 PageSegmentationMode.SINGLE_BLOCK, api.SetVariable("preserve_interword_spaces", "1"); 이 설정을 해주면 띄어쓰기 문제와 일부 미인식 문제가 해결됩니다.
  • 지훈현서아빠 2018/03/25 11:24 #

    오!! 좋은 팁을 주셔서 감사합니다 ^^
  • 2018/03/30 09:51 # 삭제 답글

    -c preserve_interword_spaces=1
  • 지훈현서아빠 2018/03/30 10:47 #

    커맨드 옵션을 좀 더 확인해 봐야 겠군요. 좋은 팁 감사드립니다. ^^
  • nhkil 2018/08/07 12:49 # 삭제 답글

    Subtitle Edit 한글 OCR 인식율 상당히 안좋아서.. 이리저리 뒤지다가 여기까지 왔네요..
  • 지훈현서아빠 2018/08/07 14:01 #

    좋은 결과가 나오셨기를 바랍니다~
  • nhkil 2018/08/07 16:50 # 삭제 답글

    Subtitle Edit에서 사용하는 한글 OCR 알고보니 구버전인거 같습니다.

    그래서 그런지 한글 인식율이 상당히 안좋습니다.


    Subtitle Edit에서 사용하는 OCR 추출 프로그램이 오픈소스인 tesseract 입니다

    이걸 4.0 버전으로 업데이트하면 될 것 같기는 한데 파이썬을 사용 할 줄은 몰라서 어떻게 해야할지 모르겠네요.


    https://github.com/SubtitleEdit/subtitleedit

    여기에 4.0 버전이 있고 업데이트라고 적혀 있는 걸로 봐서는 다른 방법이 있을 것도 같은데..

    어떻게 하면 되는지 자문을 구하고 싶어서 이렇게 글을 쓰게 되었습니다.


    주로 블루레이에 있는 이미지 자막(SUP)을 빼내서

    Subtitle Edit로 직접 타이핑할 필요없이 한글 OCR 인식해주면서 자동으로 입력해주는 기능인데요..

    일본어, 중국어 인식율 좋지만.. 한글은 인식율 상당히 안좋습니다..

    할수 없이 일일 타이핑치는거까지.. 고된 일이라... 이리저리 찾다가 여기까지 왔네요.

  • 지훈현서아빠 2018/08/08 10:19 #

    제가 소스를 받아서 확인해 보았더니,
    build.bat 에 Tesseract4 로 적용되어 있는 것 처럼 보입니다.
    확인해 보시지요~
  • nhkil 2018/08/09 04:09 # 삭제 답글

    차근차근하면서 따라해봤지만..

    https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-4.00.00dev.exe

    이게 없는 파일라고 나오네요..;

    한글 OCR 데이터베이스(kor.traineddata)만 생성해주면 되는데.. 어떻게 해야 할지 모르겠네요..

    프로그램짜는건 문외한이라.... ^^;
  • 지훈현서아빠 2018/08/09 11:57 #

    http://mcchae.egloos.com/11286830
    위에 참고하시면 4.0 용 exe 를 받을 수 있을 것 같구요,
    4.0용 kor.traineddata 는
    https://github.com/tesseract-ocr/tessdata/blob/master/kor.traineddata
    에서 받을 수 있을 것 같네요.

    도움 되셨기를..
  • 2018/08/28 17:27 # 답글 비공개

    비공개 덧글입니다.
  • 2018/08/29 10:58 # 비공개

    비공개 답글입니다.
  • 랑랑 2018/10/05 11:43 # 삭제 답글

    혹시나 tesseract-ocr-setup-4.00.00dev.exe을 찾지 못한 분들을 위해서 남깁니다
    https://digi.bib.uni-mannheim.de/tesseract 로 가셔서 tesseract-ocr-setup-4.00.00dev.exe 가장 최근 파일 다운 받으시면 됩니다
댓글 입력 영역

구글애드텍스트