개발기
TextShot 개발기 — 한글·영문·코드의 모양까지 복사하기
개발 발행 2분 읽기
#TextShot#개발기#macOS#OCR
TextShot 프로젝트 보기TextShot은 단축키를 누르고 화면 영역을 드래그하면 한국어·영어·코드가 섞인 글을 인식해 클립보드에 넣는 macOS OCR 도구입니다. 글자만 이어 붙이지 않고 문단의 빈 줄과 코드 들여쓰기까지 화면의 배치에서 되살립니다.
기존 OCR이 한글을 못 읽는 이유부터 찾았습니다#
처음에는 Alfred의 OCR 워크플로를 쓰려 했지만, 한글 줄이 빠지거나 엉뚱한 영문으로 바뀌었습니다. 같은 Vision 프레임워크를 쓰는데도 결과가 달라지는 이유를 따라가 보니, 해당 작업에는 인식 언어가 지정되지 않아 영어가 기본이었고 언어 교정도 켜져 있었습니다. 빠른 인식 모드에서는 한국어 지원 자체가 제한된다는 점도 확인했습니다.
설정 몇 개만 바꾸면 될 것 같았지만, 워크플로 내부 파일을 직접 고치면 업데이트 때 사라집니다. 그래서 한글·영문 혼합 문서와 코드 캡처에 맞춘 작은 독립 앱을 만들기로 했습니다.
느낌이 아니라 같은 이미지로 설정을 골랐습니다#
인식 모드, 자동 언어 감지, 언어 힌트, 사전 교정, 이미지 확대 조합을 바꾸며 정답 텍스트가 있는 샘플과 비교했습니다. 결과적으로 정확한 인식 모드와 자동 언어 감지를 쓰고, 식별자를 일반 단어로 바꿀 수 있는 언어 교정은 끄는 쪽이 혼합 문서에 안정적이었습니다. 확대는 항상 적용하지 않고 작은 글자일 때만 제한적으로 사용합니다.
이 원칙은 “그럴듯하게 고쳐 주는 OCR”보다 화면에 있던 문자열을 충실히 옮기는 OCR을 택한 것입니다. 코드의 변수명, 경로, 한국어가 섞인 한 줄을 마음대로 순화하지 않도록 했습니다.
Vision이 버린 레이아웃을 좌표에서 되살렸습니다#
Vision은 인식한 줄과 위치는 돌려주지만 문단, 빈 줄, 들여쓰기는 완성된 문서로 만들어 주지 않습니다. TextShot은 각 줄의 바운딩 박스를 읽어 위에서 아래로 순서를 정하고, 줄 사이 거리가 벌어지면 문단을 나누며, 시작 위치의 차이로 코드 들여쓰기를 복원합니다.
코드처럼 보이는 영역에서만 흔한 기호 오류를 조심스럽게 보정하고, 확신할 수 없는 문장은 그대로 둡니다. 텍스트가 없는 영역을 찍었을 때 기존 클립보드를 지우지 않는 것도 같은 보수적인 원칙에서 넣은 동작입니다.
지금은#
TextShot은 무료 오픈소스로 공개되어 있으며 상주 프로세스 없이 단축키를 누를 때만 실행됩니다. 화면 캡처에는 macOS의 화면 기록 권한이 필요하지만, 인식은 기기 안의 Vision으로 끝나고 결과는 클립보드로만 전달됩니다. 문서와 코드를 다시 타이핑하지 않게 하되, 원문보다 똑똑한 척하지 않는 도구로 계속 다듬겠습니다.