모스 부호(Morse code)는 .
과 -
의 나열이므로, 이미지에서 읽어내기만 한다면 일반적인 OCR로 충분해 보입니다.
하지만, Morse code image decoder 를 만드는 입장에서는 이것이 의외로 다루기 까다로운 입력입니다. 이미지 안에 있는 것은 자연어 문자열이 아니라, 점·선·공백·개행·단어 간격의 조합입니다. OCR이 일부를 놓치기만 해도 복호화(decoding) 후의 문장 전체가 무너집니다.
이 기사에서는 Morse Coder의 이미지 디코딩 기능을 예로 들어, 이미지 내의 모스 부호를 OCR만으로 처리하기 어려운 이유와 OCR의 초기 결과를 AI 보조로 재검토하는 흐름에 대해 정리합니다.
일반적인 OCR은 글자의 형태를 읽어 단어나 문장으로 만듭니다. 반면, 모스 부호 이미지에서 중요한 것은 글자의 형태 그 자체보다 다음과 같은 구조입니다.
- 점과 선의 길이 차이
- 글자 내의 간격
- 글자 사이의 간격
- 단어 사이의 간격
- 행 바꿈이나 이미지의 여백
- 스크린샷이나 사진의 압축 노이즈
예를 들어 ... --- ...와 같은 깨끗한 입력이라면 간단하지만, 실제 이미지에서는 점이 너무 작거나, 선이 흐릿하거나, 여백이 좁아지는 경우가 있습니다. OCR이 .을 놓치거나, -를 다른 기호로 취급하거나, 공백을 없애버리는 등의 일이 발생하면 모스 부호로서의 구분(delimiter)이 상실됩니다.
Morse Coder에서는 이미지 디코딩을 "OCR로 한 번에 확정"하는 방식으로 다루지 않습니다. 기본적으로는 다음과 같은 흐름입니다.
이미지 업로드
↓
OCR에 의한 초기 읽기
...
여기서 중요한 것은 AI를 OCR의 대용으로 막 가져다 쓰는 것이 아니라, OCR 결과가 문장으로서 부자연스러울 때 보조적으로 사용하는 점입니다. 첫 OCR 결과를 그대로 믿기보다, 이미지 자체와 복호화 후의 문맥을 다시 한번 살펴보는 것이 점·선·간격의 착오를 알아차리기 더 쉽습니다.
이미지 내의 모스 부호는 다음 조건에서 특히 불안정해지기 쉽습니다.
- 저해상도 스크린샷
- 비스듬하게 촬영된 사진
- 배경과 점·선의 대비(contrast)가 약한 이미지
- 글자 간·단어 간의 공백이 균일하지 않은 이미지
- 여러 줄로 나뉘어 있어 행 간격이 좁은 이미지
- 압축으로 인해 점이나 선의 끝부분이 뭉개진 이미지
이러한 부분은 일반적인 문장 OCR에서도 문제가 되지만, 모스 부호에서는 공백이 의미를 갖기 때문에 영향이 매우 큽니다. 특히 "글자 사이의 공백"과 "단어 사이의 공백"을 틀리면, 복호화된 영문이 완전히 다르게 보이게 됩니다.
도구 측에서 할 수 있는 일에는 한계가 있습니다. 입력 이미지를 준비하는 측에서 다음 사항을 의식하면 결과를 확인하기 쉬워집니다.
- 가능한 한 고해상도 이미지를 사용할 것
- 점·선과 배경의 대비(contrast)를 높일 것
- 여백을 남기면서 대상 부분만 잘라낼 것
- 비스듬한 촬영이 아닌 정면에서 찍을 것
- 결과가 부자연스러운 경우에는 원본 이미지와 대조할 것
디코더의 출력은 최종 답안이라기보다, 확인하기 쉬운 후보로서 다루는 것이 안전합니다.
이 흐름은 Morse Coder의 이미지 디코딩 페이지에서 체험할 수 있습니다.
브라우저상에서 이미지를 업로드하고, OCR의 초기 결과와 AI 보조 결과를 확인하는 방식입니다. 입력 이미지의 품질에 따라 결과가 달라지므로, 중요한 용도에서는 반드시 원본 이미지와의 대조가 필요합니다.
이미지 내의 모스 부호는 겉보기보다 OCR에 적합하지 않습니다. 이유는 읽어야 할 대상이 "글자"가 아니라, 점·선·공백의 시간적 구조에 가까운 것이기 때문입니다.
따라서 OCR로 초기 결과를 내고, 복호화 후의 문장이 부자연스러울 때 AI 보조로 이미지와 문맥을 재검토하는 단계적인 흐름을 취하고 있습니다. 완전 자동화로 확정하는 인식이 아니라, 인간이 확인하기 쉬운 후보를 만들기 위한 워크플로우(workflow)로 생각하는 것이 현실적이었습니다.