이전까지의 포스트에서는 기존에 주어진 코드에서 텍스트를 인식하고자 deskew, scanner 등등 여러가지 시도를 했었다.
그러나 결국 pattern을 이용해서 detection을 진행하는 것이 가장 정확하고 빠르게 결과를 보여줄 수 있었다.
이말인 즉, tesseract가 recognition을 진행할 때 detection의 영향이 크다는 점이다. 위에서 해결한 것 처럼 직접 pattern의 좌표를 사용할 수 있지만 … 우리는 인공지능을 배웠지 않는가 !! 배웠으면 써먹어야지 !
따라서 이번 포스트에서는 OCR의 간략한 설명과, 프로젝트 진행을 위한 여러가지 모델 및 최종모델을 선택기준에 대해서 설명하고자 한다.
OCR 모델은 크게 문자탐지(text detection)와 문자인식(text recognition)으로 구성되고 end-to-end 방식으로 연결해서 진행하는 방식이다. 그렇다면 detection쪽에서 모델과 recognition쪽에서 모델을 선택해야 할 것이다.
이전에 워터마크 인식 프로젝트에서 east와 craft를 경험했었다. 당시 craft가 east에 비해 학습속도가 월등히 빨랐다는 경험을 바탕으로 craft를 후보군에 올리기로 한다. 또한 yolo모델을 후보로 잡았는데 v4이후 모델은 east보다 text detection 성능이 좋다는 연구논문을 근거로 추가해 보았다.
tesseract는 기존 코드에서 사용하기도 했고, 실제로 어느정도 성능도 좋아서 후보로 잡았다. 다음으로 TPS-ResNet는 구글링을 통해 찾아보았는데 코드가 오픈되어 있기도 하고 네이버 Clova AI에서 발표한 모델이어서 한글인식에 뭔가 더 적합할 것 같아서 후보에 추가하였다.
최종 프로젝트는 시간이 없는관계로 위의 모든 모델을 조합하여 진행할 수 없었다. 그러므로 OCR 프로젝트에서 많은 유저들이 사용하는 모델을 선정을 하기로 했다. 그래야만 버전 충돌과 같은 문제에서 다른 사람들의 의견을 쉽게 참고할 수 있기 때문이다.
따라서 최종모델은 CRAFT + TPS-ResNet 으로 진행될 것이다. 이또한 시간이 부족하다면 Tesseract는 기존 코드에 사용하고 있으므로 detection모델만 훈련시켜서 코드에 적용할 것이다.
[참고자료]