[OCR 프로젝트 참여 동기]
예전 회사 다닐 때 OCR 프로젝트가 실패했던 것을 보아서 이게 얼마나 어렵길래 이렇게 못하나 생각이 들어서 한번 도전해 보게 되었다.
[어려웠던 점]
- 이미지 넣으면 바로 나올 거 같았는데 그게 아니었다. 최상의 모델이라고 하는 것들도 완벽하지 않았고 이 완벽하지 않은 것을 보완하는 게 어려웠다
- 특히 한번에 글자가 튀어나오지 않고, 먼저 글자가 있는 영역을 bounding box라는 것으로 추출하고, 이후에 추출된 영역에서 글자만 가지고 번역(?)이라고 할까 인식하는 단계가 이어진다
[실제로 했던 점]
- 라벨링 툴은 많다. 오픈소스. 상용.
- 대부분 이미지 넣고 GUI에서 그리는 것이 기본이다.
- Label Studio를 했는데, 기존 이미지와 라벨을 함께 넣고, 기존 라벨이 형식이 다른 bbox일 경우 형식을 맞춰주는 부분이 생소해서 어려웠다. 결국 못했다. 나중에는 1) 새 이미지 라벨해서 라벨 저장하고 2) 저장한 라벨과 이미지 같이 불러와서 확인하고 3) 수정된 라벨 저장하고 4) 외부 이미지와 라벨 가져와서, 라벨을 Label Studio에서 원하는 형식으로 json을 변환하고, 이미지랑 같이 올리고, 수정해서 저장하는 일을 해봐야겠다.
- 서버처럼 만들면 다른 사람들도 작업할 수 있게 할 수 있다던거 같은데 그것도 탐구해볼 예정이다.
- 형식으로 label studio UI 지정하는 부분이 이해하기 어려웠다.
- 멘토님이 이미지 하나씩 넘겨가면서 pass non-pass로 분류하는 프로그램 만들어주셨다.
- bbox별 txt를 수정하는 소스도 만들어주셨다.
- bbox가 잘 되었는지 확인할 때 파이썬으로 소스를 만들었는데 8개 점으로 이루어진 bbox를 만들었는데 polygon으로 된 좌표는 32개가 나온 경우가 있었는데 이 때 시각화가 잘 되지 않았다. quad box나 polygon이랑 bbox를 img에 그리는 소스는 달라야 한다
- 오픈소스 OCR 툴
- PaddleOCR 중국산인데 안정적인 성능
- EasyOCR 일반적인 성능
- Tesseract 구글이 인수했다고 하는데 그저그런 성능
- CRAFT 네이버에서 만든거 몇년 전 모델인데 bbox detecion 잘 잡았다.
- 그 외에 이렇게 패키지된 툴이 아닌, 실제로 추가학습을 시키거나, 학습이 필요한 경우는 여러가지 파라미터들이 조홥되서 운영되어서, 하나라도 맞지 않으면 도중에 에러가 나서 어려웠다. PyTorch 훈련로직을 잘 깨우치고, 모델별 특성까지 알아야 하여 짧은 시간에 할 수 없었다. 기본기가 정말 필요한 부분이라고 생각되었다. 특히 CV는 처음하는 것이라, 전통적 CV와 DL의 CV를 다 파악하게 되면 이 분야에 쓸 분야들이 많을 것 같았다. 영상처리 등.
- 각각 검출기별 또 성능평가 metrix에서 수용하는 결과 json형식이 다 달라서, 외부 데이터를 다른 툴에 집어넣을 때는 결과 GT labeling bbox가 포함된 json 구조를 수정해 줄 필요가 있지만 json 구조를 생각하며 LLM들과 함께하니 어렵지 않고 코드를 작성할 수 있었다.
- vibe 코딩
- VSC에 open chat을 연다
- 참조할 파일을 @경로로 알려준다
- 하위 사원에게 지시하듯이 업무메뉴얼로 쫙 알려준다
- 혹은 기존에 비슷한 참조할 코드를 붙여서 이렇게 만들어줘하면 기똥차게 에러없이 바로 돌아가는 코드를 생성해 줍니다만
- 서버라던지 하나가 여러개와 연계된 코드같은 경우 제대로 해결하지 못하는 경우가 많았다.
- gemini code assistant VSC extension이 괜찮을 성능이고 구글에서 완전 무료로 풀어줘서 감사하게 쓰고 있고
- 향후 Cursor가 더 많은 격차를 낸다면 그리로 가야겠다
- Claude Code가 Research Preview에서 풀려진다면, 프로젝트 단위로 참조도 해주고 직접 실행까지 해 주기에, 내가 잠깐씩 필요한 코드를 따로 .py로 저장하고 실행하지 않고 바로 Claude가 실행하면 되서 참 편리할 것 같다.
- mAP 가 이미지 평가에서 가장 잘 쓰인다던데 bbox검출 단위가 띄어쓰기별로 다를 경우 (위대한 사람, 위대한, 사람) 점수가 반으로 떨어지는 것을 보면서 과연 이게 맞나 하는 생각이 들었고
- 기업 담당자분께서 훈련을 잘 시키면 GT랑 비슷한 범위로 bbox를 도출하는 model이 나온다는 점에 약간 수긍이 되었지만
- CLEval이라는 형식은 bbox 검출단위가 다르지만 의미상에 문제없는 경우에도 점수를 확 깎지 않고, 검출+인식 뿐 아니라 검출에서만도 가능하다고 해서 이걸로 썼다.
- Upstage Document OCR로 전체 이미지를 다 라벨링 다시 하고 모델 훈련시키는 아이디어가 있었다.
- 다만 아무리 제일 성능이 괜찮은 모델이라도 100%는 아니고 사람이 검수할 자원은 없기에 2-3개 모델이 비교해가며 검증하는 로직도 고려되었다.