3P by GN⁺ | ★ favorite | 댓글 1개
  • TextSnatcher는 Linux에서 이미지 속 텍스트를 빠르게 복사하기 위한 OCR 앱으로, 이미지를 드래그해 문자 인식을 수행하고 결과를 붙여넣을 수 있음
  • 핵심 기능은 다국어 지원, 이미지에서 텍스트 복사, 임의 이미지 위 드래그 후 붙여넣기, 빠르고 쉬운 사용성임
  • 문자 인식에는 Tesseract OCR 4.x를 사용하며, Tesseract 문서와 Tesseract 프로젝트 링크를 함께 제공함
  • 배포는 Flathub와 elementary OS AppCenter를 통해 제공되며, 직접 빌드하려면 Meson과 Ninja 기반 설치 절차를 사용함
  • 실행에는 scrot, tesseract-ocr, Tesseract 언어 데이터가 필요하고, 현재 프로젝트는 다음 달 업데이트와 수정으로 돌아올 예정이라고 안내함

TextSnatcher가 하는 일

  • TextSnatcher는 이미지에서 텍스트를 복사하고 몇 초 안에 OCR 작업을 수행하는 Linux용 앱임
  • 사용자는 이미지 위를 드래그해 텍스트를 복사하고 붙여넣을 수 있음
  • 제공 기능:
    • 다국어 지원

      • 드래그로 이미지에서 텍스트 복사
      • 임의 이미지 위에서 드래그 후 붙여넣기
      • 빠르고 쉬운 사용성

OCR 엔진과 관련 프로젝트

설치와 배포 경로

  • 앱은 Flathub에서 받을 수 있음
  • elementary OS 사용자는 AppCenter를 통해 받을 수 있음

의존성과 빌드

  • 실행 시 필요한 런타임 의존성:
    • scrot
    • tesseract-ocr
    • Tesseract 언어 데이터
      • Arch 저장소와 Debian 저장소 링크를 제공함
  • 빌드 시 필요한 빌드타임 의존성:
    • granite
    • gtk+-3.0
    • gobject-2.0
    • gdk-pixbuf-2.0
    • libhandy-1
    • libportal-0.5
  • 직접 빌드와 실행은 저장소를 클론한 뒤 Meson 빌드 디렉터리를 만들고, Ninja로 설치한 다음 com.github.rajsolai.textsnatcher를 실행하는 흐름임

개발 상태와 출처

  • 프로젝트는 Vala로 만들어졌다는 배지를 포함함
  • README에는 현재 Linux PC 구입 자금을 모으는 중이며, 곧 다음 달에 업데이트와 수정으로 프로젝트가 돌아올 예정이라고 적혀 있음
  • 영감으로 든 항목은 Planner의 README, Develop의 애플리케이션 구조, macOS 앱 TextSniper임

댓글과 토론

Hacker News 의견들
  • Dibby053와 같은 스크립트를 쓰고 있으며, Stack Overflow에서 가져온 뒤 KDE/GNOME, Wayland/X11에서 동작하도록 조금 고쳤고 현재 상태를 알림으로 보여주게 했음
    X11/Wayland 판별은 아직 직접 테스트하지 않았지만, 써보고 결과를 알려줘도 좋음

    • 스크립트를 조금 바꿔서 정리 작업이 제대로 되게 하고, 스크린샷 뒤 창이 튀어나오지 않도록 spectacle백그라운드 모드로 실행하게 했음
    • 오류 처리가 좋은데, 임시 파일은 생략하고 파이프로 넘기면 됨
      grim, slurp, mogrify, tesseract, wl-copy를 이어 붙이고, fuzzel로 OCR 언어를 고르는 방식임
    • 나도 같은 스크립트를 쓰다가 HN에서 이 방식을 발견했음
      dmenu로 언어를 고르고 maim -us | tesseract --dpi 145 -l eng+${lang} - - | xsel -bi처럼 처리함
      https://news.ycombinator.com/item?id=33704483#33705272
    • trap "cleanup '$SCR_IMG'" EXIT에서 ShellCheck가 오탐을 낼 때도 있지만, 이 경우엔 완전히 틀린 지적은 아님
      trap에 넘긴 명령은 일반적으로 평가되므로 변수 확장이 일어나고, trap 'cleanup "$SCR_IMG"' EXIT가 더 안전하게 동작함
      최신 Bash라면 trap "cleanup ${SCR_IMG@Q}" EXIT도 선택지임
    • 단축키에 bash -c 'flameshot gui -s -r | tesseract - - | gxmessage -title "Decoded Data" -fn "Consolas 12" -wrap -geometry 640x480 -file -'를 바인딩해서 쓰고 있음
      Super+O를 누르고 OCR할 영역을 드래그하면, 캡처된 텍스트가 바로 팝업 대화상자로 뜸
  • 예전에 어딘가에서 복사한 스크립트가 이 일을 꽤 잘해줌
    scrot로 영역을 캡처하고, mogrify로 흑백화·확대 전처리를 한 뒤, tesseract로 텍스트를 뽑아 xsel로 클립보드에 넣고 알림까지 띄우는 방식임

    • 공유 차원에서 덧붙이면, scrot보다 maim을 선호함
      --nodrag 옵션 덕분에 트랙패드로 영역 선택할 때 한 번 클릭하고 커서를 옮긴 뒤 다시 클릭하면 돼서 더 편함
      maim -s --nodrag --quality=10 $IMG.png에서 10scrot100에 해당함
    • 이런 식으로 한동안 썼지만 Tesseract가 꽤 자주 기대 이하였음
      확대 전처리도 큰 차이를 못 느꼈고, 어떤 전처리가 더 나아질지 잘 모르겠음
      TextSnatcher가 이보다 개선하는 게 있는지 궁금한데, GitHub 페이지는 불투명함
    • PowerShell로도 비슷한 스크립트를 갖고 있었지만, 이전 직장의 자잘한 스크립트들과 함께 시간 속으로 사라졌음
      Unix와 Windows 사이에서 사는 동료들에게 미안함
    • trap "rm $IMG*" EXIThttps://www.shellcheck.net/wiki/SC2064를 참고하는 게 좋음
      mktemp -d를 쓰고 디렉터리를 재귀 삭제하는 편이 낫다
    • 내게는 이 방식이 딱 맞음
      버튼 있는 창을 눌러야 하는 것보다 단축키에 스크립트 바인딩하는 편이 훨씬 낫다
  • Windows를 쓰는 동료 평민들을 위해 말하자면, 공식 Microsoft PowerToys 추가 기능에도 이 기능이 있음
    기본 스크린샷 도구에도 들어갔지만, 개인적으로는 PowerToys의 단일 키보드 단축키가 더 쓰기 좋음
    https://github.com/microsoft/PowerToys

    • 내장 캡처 도구 OCR은 별도 언어 OCR 팩을 설치하지 않아도 영어, 러시아어, 중국어, 일본어 등 여러 언어에서 동작함
    • 기본 캡처 도구도 이 기능을 제공함
      WIN+SHIFT+S를 누르면 되고, “Text actions” 아이콘이 없다면 Windows Store에서 최신 버전으로 업데이트하면 됨
  • 오래전부터 궁금했는데, Tesseract가 정말 이 분야의 최신 최고 수준 해법인지 모르겠음
    체감상 꽤 부족해 보이고, 2019년쯤 이미 컴퓨터 비전 발전을 생각하면 텍스트 인식은 사실상 해결된 문제여야 한다고 느꼈음
    사람보다 더 잘해야 할 것 같은데, 저해상도 영수증 스캔조차 특히 영어가 아니면 정확히 변환하지 못했음
    내가 제대로 못 쓰는 걸 수도 있음

    • Tesseract를 반정기적으로 쓰는데, 영수증 스캔이나 사진에서도 인식 문제는 드물었음
      구체적으로 어떤 방식으로 쓰고 있는지 궁금함
  • Tesseract가 점점 더 자주 언급되는 게 보임
    10~15년 전 스캔한 과학 논문에 써봤을 때는 결과가 실망스러웠고, 수작업 후처리가 직접 타이핑하는 것보다 크게 덜하지 않았음
    그래서 내게 Tesseract는 “시도할 가치 없음”의 동의어가 됐지만, 시간이 지나며 나아졌을 수 있으니 다시 써볼 만하겠음

    • 이제는 스캔 문서만 OCR하거나 이미지 준비 과정을 많이 통제할 수 있다면 괜찮음
      이상한 글꼴이나 나쁜 이미지 품질까지 포함한 범용 인식에서는 EasyOCR이 훨씬 나은 결과를 줬음
    • 이 프로젝트는 최소 몇 년 된 Tesseract 4.1.1을 포함하고 있음
    • https://github.com/ocrmypdf/OCRmyPDF를 써보면 좋음
      내부적으로 Tesseract를 쓰는데 정말 훌륭함
    • 지금은 훨씬 나아졌음
      15년 전에는 그나마 덜 나쁜 결과를 얻으려면 전처리를 꽤 해야 했지만, 지금은 전처리 없이도 좋은 결과를 얻고 있음
    • 3~4년 전에 처음 써봤을 때는 괜찮았음
  • 직접 써봤는데 꽤 잘 동작함
    Flatpak 앱이라 완전한 동작에는 데스크톱 포털이 필요하지만, 기존 xdg-desktop-portal-wlr 구성에서는 별도 설정 없이 잘 됐음
    Screenshot API를 지원하는 xdg-desktop-portal 설정이 있는 X11이나 Wayland 환경이라면 무난히 동작할 듯함
    결과는 들쭉날쭉하지만 나쁘진 않고, 깨끗하게 읽히는 텍스트는 공백 문제나 가끔의 오류 정도만 있어서 오류 대화상자 같은 곳에서 텍스트를 복사할 때 유용할 수 있음
    다만 Linux에서는 애초에 오류 대화상자 텍스트가 선택 가능한 경우가 더 많고, Windows의 표준 MessageBox는 Ctrl+C에 반응함

  • 비슷한 앱으로 Frog를 쓰고 있는데 아주 성공적으로 사용 중임
    https://getfrog.app

    • AppImage도 없고, .deb도 없고, brew도 없음
  • macOS에는 Preview에서 문서를 열고 텍스트 선택을 시도하는 것 이상을 해주는 유틸리티가 있음
    https://github.com/schappim/macOCR
    저자를 좋아함

    • 참고로 Preview를 거치지 않고 Cmd-Shift-3으로 스크린샷을 찍은 뒤 썸네일을 클릭해 Quick Look에서 텍스트와 상호작용할 수 있음
      이후 오른쪽 위 휴지통으로 이미지를 지우면 되고, Cmd-A도 동작함
      이 댓글에 써본 예시는 여기 있음: https://imgur.com/a/q0NvcS6
  • iOS에서는 액션 버튼에 연결한 단축어로 비슷한 해법을 만들어 씀
    일부 앱은 텍스트 복사가 쉽지 않거나 외국어인 경우가 있는데, 스크린샷을 찍고 텍스트를 추출한 뒤 원문 언어를 자동 감지해 영어로 번역하고, 원문과 번역문을 Quick View에 보여줘 선택·복사할 수 있게 함
    구현 예시는 여기서 시험해볼 수 있음: https://www.icloud.com/shortcuts/f420d24e4960415da1a43f230abfce39
    참고로 최신 iOS에서는 사진 앱에서 사진을 열고 손으로 사진 속 텍스트를 선택해 복사할 수도 있음

    • 훌륭한 단축어임
      이미지에서 공유 버튼을 누른 뒤 공유 시트에서 써봤고 동작했지만, 이미 이미지를 넘기는 상황이라면 스크린샷 단계는 중복임
  • “Linux Desktop용”이라고는 하지만, 이건 Flatpak이고 모든 Linux 배포판이 Flatpak을 기본 제공하지는 않음
    Fedora 가상 머신에서 한 번 돌려볼 예정이고, 이런 도구는 많이 봤는데 대부분 Tesseract를 활용함
    거칠거나 노이즈가 많은 이미지, 글자가 휘거나 기울어진 경우에는 크게 실패하고, CAPTCHA를 풀어주지는 못함
    https://tesseract-ocr.github.io/tessdoc/Home.html

    • Flatpak이 동작하지 않는 배포판이 어디임?
    • 이건 그냥 Vala 코드 덩어리임
      정확히는 저자가 당신 배포판용 패키지를 만들지 않았고, 다른 누구도 시간과 의욕을 내서 패키징하지 않았다는 뜻에 가까움
      찾고 있는 관리자가 바로 당신이 될 수 있음
    • 그건 딱히 단점이 아님
      만약 .deb만 있었다면 Ubuntu/Debian이 아닌 곳에서는 안 된다고 말할 수 있고, 그게 훨씬 더 큰 단점임