티스토리 뷰
디아블로2를 다시 시작했다. 예전이나 지금이나 이 게임의 진입장벽은 역시 '아이템 가치'를 아는 것에서 시작된다. 초보자 입장에서는 줍는 족족 커뮤니티나 거래 사이트를 뒤져야 하는데, 이게 여간 번거로운 게 아니다.
"그냥 화면을 찍으면 거래사이트 정보와 AI가 바로 가치를 알려줄 순 없을까?"
단순한 호기심에서 시작된 이 고민이 생각보다 깊은 삽질의 시작이 될 줄은 몰랐다.
기존 OCR과 비전 모델의 한계
처음엔 요즘 잘나가는 일반 OCR 모델과 비전(Vision) 모델에 냅다 스크린샷을 던져봤다. 결과는 참담했다. 그나마 비전 모델이 맥락을 짚어내긴 하지만, 실사용하기엔 정확도가 턱없이 낮았다.
디아블로2 특유의 반투명한 툴팁 배경과 독특한 폰트가 문제였다. 인간의 눈에는 명확해 보여도, 기계 입장에서는 배경 노이즈와 글자가 뒤섞인 지옥도였을 테니까. 결국 일반적으로 튜닝된 OCR로는 답이 없다는 결론에 도달했다.
나는 OCR(광학 문자 인식)에 대해 무지하다. 어떤 단계로 처리해야 효율적인지, 요즘 트렌드는 뭔지 하나도 모르는 상태에서 무작정 리서치에 뛰어들었다.
가장 먼저 눈에 들어온 건 PaddleOCR이었다. 커스텀 학습이 가능하다기에 덤벼봤는데, 아이템 문자를 제대로 인식시키려면 텍스트 라인을 한 줄씩 잘라서 학습시켜야 한다는 사실을 알게 됐다.
노가다로 일단 테스트
샘플로 120개 정도의 툴팁 라인을 확보했다. 한땀 한땀 이미지를 수정하며 학습 데이터를 만들었다. 진짜 못할 짓이다 싶었지만, 결과가 궁금해서 돌려봤다.

- 결과: 학습 데이터 내에서는 꽤 정확하게 맞춘다. 과적합(Overfitting)일지도 모르겠지만, 어쨌든 '학습시키면 된다'는 희망은 봤다.
- 문제: 제대로 된 성능을 내려면 최소 1,000개 이상의 데이터가 필요하다는데, 120개 만드는 데도 진이 다 빠졌다. 자동화가 절실했다.
리서치를 좀더 해보니 YOLO와 OpenCV라는 도구를 알게되었다. 이걸 활용하면 내 노가다를 획기적으로 줄일 수 있을 것 같다.
- YOLO: 전체 화면에서 아이템 툴팁 박스가 어디 있는지 영역을 찾아내는 데 사용.
- OpenCV: 찾아낸 툴팁 박스 안에서 글자 라인별로 이미지를 정교하게 크롭(Crop)하는 데 사용.
이 과정은 단순히 학습 데이터를 만들 때뿐만 아니라, 실제 프로그램이 동작하는 '추론' 단계에서도 필수적이라는 걸 깨달았다. 아직 OpenCV가 내 생각만큼 깔끔하게 라인을 따줄지는 테스트해봐야겠지만, 적어도 '무식한 노가다'에서 '공학적인 접근'으로 한 걸음 나아간 기분이다.