인공지능 개발자 도전기
저는 학교 캡스톤 디자인 프로젝트로 컴퓨터 비전을 활용한 로봇 서비스 만들기에 대한 주제로 프로젝트를 진행했습니다. 저는 이전에 강화학습을 공부했었기 때문에 원래는 강화학습에 대한 프로젝트를 하고 싶었습니다. 하지만 담당 교수님과 토의를 거치면서 프로젝트 기간 내에 할 수 있는 프로젝트를 진행하는 것이 좋다는 말을 들어 주제를 변경하게 되었습니다.
그렇게 진행하게 된 프로젝트 주제는 도서관 서비스 로봇이었습니다. 현실적으로 혼자서 하드웨어까지 만드는 것은 어려우니, 로봇에 들어가는 소프트웨어를 개발하게 되었습니다. 저는 학교 도서관에 종종 가곤 했는데 도서관에 어떤 책을 읽고 싶다 검색해서 가곤 했습니다. 하지만 검색은 했지만 실제로 그 책이 어느 책장에 있는지 찾기가 어려운 적이 있었습니다. 이러한 필요성 때문에 로봇이 이렇게 책을 찾는 것을 도와주면 좋지 않을까 하는 생각이 들었습니다.
로봇이 카메라로 책장을 인식하고 문자를 읽는다고 가정하였습니다. 이를 위해 OCR을 사용하였습니다.
OCR은 Optical Character Recognition의 약어로, 광학 문자 인식을 의미합니다. OCR은 인쇄된 문서나 이미지에 포함된 텍스트를 컴퓨터가 인식하고 이해할 수 있는 형태로 변환하는 기술입니다. OCR은 기계가 인간의 언어를 이해하고 처리하는 NLP와 유사한 개념이지만, 주로 인쇄된 문자를 대상으로 합니다.
OCR은 다양한 응용 분야에서 사용되고 있습니다. 예를 들어, 문서 스캐닝 및 디지털 아카이브 구축에서는 OCR을 사용하여 인쇄된 문서를 디지털 텍스트로 변환하여 텍스트 검색이 가능하게 합니다. 또한, 자동차 번호판 인식, 신분증 인식, 상품 바코드 인식 등의 영역에서도 활발하게 활용됩니다.
OCR 시스템은 일반적으로 다음과 같은 단계로 작동합니다
- 이미지 스캔: 인쇄된 문서 또는 이미지를 스캔하여 디지털 이미지로 변환합니다.
- 전처리: 스캔된 이미지에서 노이즈 제거, 이진화, 크기 조정 등의 전처리 과정을 거쳐 이미지를 개선합니다.
- 문자 감지: 전처리된 이미지에서 문자의 위치를 감지하고 분리합니다. 이 단계에서는 주로 컴퓨터 비전 기술과 머신러닝 기법이 활용됩니다.
- 문자 인식: 각 문자 영역에서 실제 문자를 인식하고 텍스트로 변환합니다. 이 단계에서는 다양한 OCR 알고리즘과 기계 학습 기법이 사용됩니다.
- 후처리: 인식된 텍스트를 정제하고 보정하는 단계입니다. 이 과정에서는 오타 수정, 문자 교정 및 형식 지정 등이 수행될 수 있습니다.
OCR 기술은 딥러닝의 발전과 함께 성능이 크게 향상되었습니다. 최근의 OCR 시스템은 고해상도 이미지에서도 정확하고 신속한 문자 인식을 제공하며, 다양한 언어와 문자 체계를 지원합니다. 또한, OCR은 인간의 노동력을 대체하고 효율성을 향상하는 자동화 시스템에 핵심적인 역할을 수행합니다.
사람들이 학교 도서관에 방문한다고 할 때 로봇을 통해 책을 검색하고 로봇이 어떤 책장에 그 책이 있는지 찾아 책장으로 가는 경로를 알려주는 것을 기획하게 되었습니다. 학교 도서관의 책장들을 직접 찍어 데이터를 모았습니다. 그다음 OCR을 통해 찍힌 사진 중에서 책의 이름들을 얻을 수가 있었습니다. 그렇게 책 이름을 얻은 것을 통해 어떤 책장에 어떤 책이 있는지 알 수 있는 것이었습니다. 그다음은 로봇의 경로를 찾아주는 것이었습니다. 로봇의 경로는 A* 알고리즘을 통해 최단경로 찾기를 진행했습니다.
로봇을 통해 책의 위지와 책장까지의 경로를 알려주는 데에는 웹페이지 연동을 사용했습니다. Flask를 통해 python 코드를 직접 연결하여 웹페이지에서 책 이름을 검색하면 바로 책장의 위치가 나오도록 진행했습니다.
이때의 로봇 프로젝트를 했던 경험은 내가 하나의 프로젝트를 완전하게 수행했구나 하는 뿌듯함이 들게 해 주었습니다. 또한 OCR을 하면서 딥러닝을 이렇게 사용만 하기보다는 직접 구축하는 사람이 되어야겠다는 생각이 들어서 그 후 딥러닝을 입문하게 되는 계기를 만들어 주기도 했습니다.