내겐 임무가 있었다.
그게 무엇이냐?
Tesseract 로 값을 읽어와서 DB 에 저장하는 그런 임무.
보통 Tesseract 는 Python 을 이용해 사용한다고 하는데
나는 JAVA 공화국에 사는 자바인이기 때문에(?) 자바를 이용해보았다.
사용은 간단하다.
1. Tesseract 인스턴스를 만든다.
- 사용할 언어 (학습시킨 언어 모델)
- 언어 모델이 들어있는 파일 경로
설정을 해주고
2. 내 경우는 pdf 파일에 들어 있는 값을 가져오는 것이기 때문에
base64로 오는 파일을 pdf로 렌더링해준 뒤
3. 내가 가져와야할 값이 있는 좌표 부분을 bufferedImage 화 해준다음
4. Tesseract 인스턴스로 OCR 을 해주면
5. String 이 가져와진다.
코드를 직접 가져와서 보여주면 좋겠으나
회사 업무라 ...ㅎ.ㅎ;
나중에 혼자 만들어보게 되면 올려보기로.
나는 총 네 가지 종류의 폰트를 가진 파일을 OCR 했는데
결론부터 말하면 2개는 성공, 2개는 실패했다.
내가 가져올 데이터는 숫자 데이터였음
1. 성공한 이미지는 폰트가 되게 예쁘고 알아보기 쉽게 쓰여져 있음.
2. 실패한 이미지는 폰트가 너무 얇고 뒤죽박죽에 숫자가 있는 좌표가 이미지마다 제각각인 경우가 많았다.
- 숫자 데이터만 학습시킨 언어 모델을 가져와봤는데도 실패함..
- 이 때문에 이미지를 렌더링해서 폰트를 굵게 하고 알아보기 쉽게 만들었으나 역시 실패함.
- 좌표때문이 아닌가 싶음...
3. 폰트를 직접 학습시키는 방법이 있다고 하여 사용해보려 했음.
- 들이는 노력 대비 아웃풋이 안 나올 거 같다고 보류
- 일단 OCR 해서 집어넣고 그 다음 사람이 검증하자고 얘기해봤으나 휴먼에러가 더 심하지 않을까 생각.
- 두 가지 이미지는 사람이 직접 데이터를 집어넣는 것으로 합의
이게 내가 주어진 제대로 된 첫 임무여서 멋지게 완수하고 싶었는데
아쉽게 반성반실(반 성공 반 실패) 했지만
회사 업무때문에 새벽 4시에 잠도 자보고 야근도 해보고 유익한 시간이었음 ^^!
재밌는 업무였음 ㅎ.ㅎㅋ
RDBMS 만 써봤었는데 firebase 도 써보고,,,헤헤
사실 폰트 학습시켜보는 것도 해보고 싶었는데
빨리 배포시켜야 한다고 해서 날짜 맞추느라 못했음 ㅠㅠ
그래서 혼자라도 해보고 싶었는데
요만큼 프로젝트가 밀려있어서....ㅋ
나중에 요만큼에 영수증 인식 기능을 넣는다면 해보는 것으로 ㅎ_ㅎ
'개발 잡담' 카테고리의 다른 글
헤드 퍼스트 디자인 패턴 후기 (0) | 2024.03.04 |
---|---|
잠이 안 오니까 간단한 프로젝트 후기를. (0) | 2024.02.26 |
좋은 개발자란 무엇일까? (0) | 2024.01.15 |
DBMS? JPA? 그래도 쿼리는 알아야 한다. (1) | 2023.12.11 |
PK ) Auto Increment 와 UUID 에 대한 고민 (1) | 2023.12.07 |