[Golang] Tesseract를 이용한 OCR

토이 프로젝트에서 OCR을 할 일이 생김

Go언어를 이용할거라 찾아봤는데 역시나 있음!

해당 사이트에서 서버 어플리케이션으로 지원하는 gosseract OCR을 이용해 테스트 이미지를 넣어봤음

의외로 잘 인식했고 이 라이브러리를 사용하기로 결정

Install 부분을 보니 tesseract-ocr 라이브러리를 이용한 gosseract를 사용하는건데 생각보다 쉽지 않았음

토이 프로젝트의 환경이 windows 환경인데 issue에 나와 같이 진행 못하는 사람들이 몇몇 확인되었음

설치부터 난관에 부딪혔고 시간이 많지 않았기 때문에 다른 방법을 생각해야했음

그리고 tesseract-ocr을 설치하고 혹시나 해서 커맨드로 직접 명령 프롬프트에서 실행할 수 있는지 확인

설치 파일 위치는 여기 > https://github.com/UB-Mannheim/tesseract/wiki

다행히 실행하는데는 큰 문제가 없었고 Go언어에서 tesseract.exe와 ocr 변환을 원하는 이미지를 넣고 실행하기로 결정

명령 프롬프트에서 기본 사용법은 아래와 같음

1
> tesseract.exe temp.png stdout

이걸 Go언어에서는 exec.Command를 이용해 실행하면 됨

1
result, err := exec.Command("%tesseract_path%\\tesseract.exe", "temp.png", "stdout", "--psm", "8", "-c", "tessedit_char_whitelist=0123456789").Output()

psm 인자는 Page segmentation modes라고 하는데 인식 규칙정도라고 할 수 있음

자세한건 검색하면 나오는데 내가 테스트한 이미지들은 8에서 가장 인식률이 좋았음

그리고 숫자만 필터링 하기 위해 -c tessedit_char_whitelist=0123456789 인자를 추가했음

결과는 생각보다 쉽게 OCR을 변환한 정보를 얻을 수는 있는데 신뢰도를 올리기 위해서는 몇가지 작업이 더 필요할 것으로 보이고 테스트를 통해 따로 포스팅할 예정

ps. 그리고 저 gosseract를 이용해서 깔끔하게 처리하고싶어..