Tesseract는 구글이 만든 OCR엔진입니다. 오픈소스라 무료로 이용이 가능합니다. 다만 사용하기 애매하게 만들어졌다는 단점이 있습니다만, Python으로 이용 가능하도록 누군가가 잘 Wrapper를 만들었습니다. 동작하는거 봐서는 그냥 /tmp에다가 넣어서 뿌리는 듯 하지만요.


제가 사용한 것은 pytesseract(https://github.com/madmaze/pytesseract/)란 놈으로 그냥 시스템에 설치된 tesseract를 실행해주는 간단한 스크립트입니다. 대신 간단한 만큼 /tmp를 어마어마하게 써 댑니다. 그냥 tmpfs로 마운트해서 써야겠습니다. python-tesseract(https://code.google.com/p/python-tesseract/)를 쓰면 좀 나을 것 같기는 한데 라이브러리 방식에 고생을 할 것 같으니 일단은 넘어갑시다.


대충 아래와 같이 쓰면 되기 때문에 간단하게 OCR을 쓸 수 있습니다.

우분투에선

sudo apt-get install tesseract-ocr

위 명령어로 OCR엔진을 설치할 수 있구요.(어쨌건 해당 엔진이 설치되어 있어야 합니다.)


import pytesseract
try: import Image except ImportError: from PIL import Image
print(pytesseract.image_to_string(Image.open('test.png')))


다른것은 둘째 치고 hocr로 만들어주는 고마운 기능이 있더군요.


print image_to_string(image 객체,lang=None, boxes=False, config="o hocr") 

요런 명령을 때리면 hocr로 뽑아주는데 에러가 납니다....


알고보니 hocr기능이 들어가기 전에 프로젝트가 중단된 것인지 소스 수정이 필요하더군요.


/usr/local/lib/python2.7/dist-packages/pytesseract 여기로 쫓아가서


pytesseract.py 파일을 관리자 권한으로 열어줍시다.



    if not boxes:
        output_file_name = '%s.txt' % output_file_name_base
    else:
        output_file_name = '%s.box' % output_file_name_base

    if not boxes:
        if config=="o hocr":
            output_file_name = '%s.hocr' % output_file_name_base
        else:
            output_file_name = '%s.txt' % output_file_name_base  
    else:
        output_file_name = '%s.box' % output_file_name_base


위의 것을 아래로 수정하시면 hocr로 뽑히게 됩니다. 뽑힌 내용을 QTwebview등으로 뿌리면 OCR화 된 내용을 볼 수 있습니다. 그렇다는 것은 크롬에서 hocr파일을 열고 구글의 번역 기능을 돌려버릴 수도 있고 (구글 번역 기능은 api 사용료가 붙습니다. 하지만 크롬을 쓰면 이야기는 달라집니다.) PDF화도 가능합니다.


....사실 python보다는 bash로 처리하는 것이 훨씬 더 경제적이었다는 느낌이 드네요. 뭐하러 Python으로 만들었지?

,