레이블이 파이썬인 게시물을 표시합니다. 모든 게시물 표시
레이블이 파이썬인 게시물을 표시합니다. 모든 게시물 표시

2021년 12월 13일 월요일

OCR 인식률 비교. 테서렉트 vs paddleocr vs easyocr vs 카카오 api vs < 네이버 api


최근 디아블로2 레저렉션을 시작 했다. 예전과 다르게 유니크 아이템 외에도 확인 해야 하는 아이템들이 많았다.

그런 정보를 다 찾고 확인 하는 게 힘들었다. 

디아블로 아이템의 아이템명이나, 속성들을 감별해서 미리 등록해 놓은 DB와 비교하여 가지고 있어야 할 아이템을 판별하는 프로그램을 만들고 싶었다.

결론은 실패. OCR 문자 인식부터 막혔다.

OCR 인식에 총 3일을 투자 했는데, 이틀을 테서랙트(tesseract)에 투자했다.  


테서렉트

인식률 향상을 위해 gray 변환, medianBlur로 노이즈 제거, thresholding, erosion, dilation 등 온갖 기법을 다 써도 인식률이 크게 향상되지는 않았다.

psm 옵션과 oem옵션을 아무리 조절해도 인식률은 크게 향상 되지 않았다.

디아블로2의 폰트 자체가 일반적인 폰트가 아니다 보니 인식률이 떨어 지는 것으로 보인다.

디아블로 폰트를 새로 학습하여 인식을 해 보기로 했다.

블리자드에서 공식적으로 제공하는 폰트는 없고 비슷하게 만든 폰트는 있었다.

이중에 kodia만 한글을 지원해서 사용했다.

학습에는 jTessBoxEditor를 사용했다. 

일단 학습완료는 되긴 하는 데, 오류가 나는 부분이 많다.

APPLY_BOXES: boxfile line 1/가 ((104,3153),(145,3193)): FAILURE! Couldn't find a matching blob

그래도 완료된 모델로 돌려 보았으나 여전히 인식률은 좋지 못했다.

학습이 제대로 안 된 것 같다.

이틀동안 이 삽질을 하고 있으니 저 오류 나는 것도 찾기 싫어졌다. 테서랙트는 포기.


EasyOCR

다음으로 시도한 건 EasyOCR. 이거 꽤 좋다. 설치도 쉽고, 사용법도 굉장히 쉽다. 인식률 자체도 테서렉트보다 확실히 좋다.

이미지 전처리를 시도한 거랑, 안한 거랑 크게 인식률 향상은 없었다.

다만 내가 원하는 정도의 인식률은 안 되었다.


API

이쯤되면 그냥 돈내고 사용하는 API를 사용해볼까하는 생각이 들었다.

테스트 해본 API는 카카오랑 네이버

카카오 ocr api 테스트

네이버 ocr 테스트 - CLOVA OCR

네이버는 테스트를 위해서 이름, 이메일, 사업체를 등록해야 한다. 좀 꺼림칙했지만 일단 테스트만 해보기 위해 넣었다.

결과는 네이버의 압승. 단 2군데만 조금 틀린 결과를 보여줬다.

카카오 OCR은 생각보다 좋지 않았다. EasyOCR보다 못한 것 같다.



주관적인 OCR 인식률 비교

테서렉트 == paddleocr < 카카오 api < easyocr < 네이버 api


인식에 사용한 이미지



2020년 9월 16일 수요일

사이드 프로젝트는 성취감입니다.

 최근에 이동식 에어컨을 팔았다. 올리자마자 여기저기서 연락이 온다. 대충 비슷하게 시세 알아보고 올리는 데도 항상 너무 싸게 올리는 것 같다. 내가 생각하는 가격에 조금 더 비싸게 올려놓고, 안 팔리면 조금씩 가격을 내려야 하는데, 자꾸 잊어먹는다. 나는 장사 체질이 아닌가 보다. 

파이썬을 배운 김에 뭔가 하나를 만들어 보자는 생각에 중고가격을 한눈에 알아보는 사이트를 만들었다. 중고가격을 책정하는 데에 도움이 되는 사이트가 있으면 좋을 것 같았다. 찾아보니 비슷한 사이트가 없었다. 

중고 가격은 네이버 카페 중고나라에서 가져왔다. 처음에는 크롤링을 하려고 했으나, 네이버 카페 글 검색 api가 있었다. 내가 딱 원하는 api는 아니지만, 가공하면 쓸만한 정보를 얻을 수 있었다. 다 만들고 나니 꽤 그럴듯했다. 그래서 이왕 하는 김에 공부도 할 겸 Vuejs로 프론트도 만들었다. 프론트도 다 만들고 나니 아예 오픈하는 것도 나쁘지 않은 것 같았다. 그래서 도메인도 사서 연결했다. 서버는 AWS 1년 free 서버를 사용했다.

그래서 완성한 사이트가 바로 www.findusedprice.com 다. 많은 애용바란다.  

도메인 만료. 사이트 중단...


사이트를 열고 보니 크롬에서 안전하지 않은 사이트로 뜨는 게 마음에 걸린다.  ‎Let's Encrypt를 이용해서 SSL까지 적용했다.

이것저것 검색해 보니 가격이 완벽하지가 않다. IX940 같은 모델명으로 검색하면 정확한 데이터가 나오지만, 광범위한 검색은 제대로 된 가격을 얻기가 힘들다. 제외 키워드를 넣어서 그나마 조금 더 괜찮은 데이터가 나오도록 했다.

도메인은 3년짜리를 사면 할인을 해 주는데, 3년까지 저 서비스가 남아있을 것 같지가 않다. 일단 1년으로 했다. 구글 애널리틱스를 붙였다. 도메인 만료 전까지 사용자가 어느 정도 있으면 연장을 하고 거의 없으면 그대로 사장 시킬 예정이다.

최근에 취업하게 되어 출퇴근하고 있다. 출퇴근한다는 거 자체가 별거 아닌 거 같지만 꽤 힘들다. 정시 퇴근을 하고 집에 와도, 씻고 밥 먹고 조금 TV보고 하면 금방 잘 시간이다. 밥 먹으면서 졸기도 한다. 그 잠깐 시간하고 주말에 시간을 내서 완성하고 보니, 뿌듯함이 생긴다. 이래서 작은 일이라도 끝내는 일이 중요하다고 하나 보다.