5P by GN⁺ | ★ favorite | 댓글 1개
  • macOS Shortcuts 앱을 이용하면 별도 유료 서비스 없이 로컬 OCR 단축어를 만들고 터미널/CLI/파이썬에서 이미지 텍스트 추출을 실행할 수 있음
  • 핵심 구성은 Extract Text from Image 액션에 Shortcut Input을 연결하고, 결과를 클립보드로 복사하는 흐름임
  • 단축어 이름은 ocr-textextract-text처럼 공백 없는 소문자로 두면 CLI에서 호출하기 쉬우며, 이름 입력 뒤 Enter를 눌러 저장해야 함
  • 터미널에서는 shortcuts run ocr-text -i <이미지 경로>로 실행하고, 추출 결과는 클립보드에 복사되어 Command-V로 확인할 수 있음
  • 파이썬에서는 subprocess.check_output()으로 같은 shortcuts run 명령을 호출해 OCR 단축어를 재사용 가능함

Shortcuts에서 OCR 단축어 만들기

  • macOS의 Shortcuts 앱을 열고 + 버튼으로 새 단축어를 만듦
  • 오른쪽 사이드바에서 extract text를 검색한 뒤 Extract Text from Image 액션을 왼쪽 작업 영역으로 드래그함
  • Extract text from ... 액션의 파란색 Image 입력을 클릭하고 Shortcut Input을 선택함
    • 위쪽에 Receive 액션이 나타나며, 그대로 두면 됨
  • 오른쪽 사이드바에서 copy를 검색해 Copy to Clipboard 액션을 Extract Text from Image 아래에 배치함
    • 마지막 액션에서 Copy 뒤가 Text from Image인지 확인해야 함
    • Copy to Clipboard 액션을 아래로 드래그하는 과정이 다소 불편할 수 있음
  • 단축어 이름은 extract-text 또는 ocr-text처럼 단순하고 공백 없는 소문자가 적합함
    • 이름을 입력한 뒤 Enter를 눌러야 이름이 저장됨

CLI와 파이썬에서 실행하기

  • 터미널에서 단축어를 실행하는 명령은 다음과 같음
shortcuts run ocr-text -i <A PATH TO SOME IMAGE>
  • 실행 후 Command-V로 붙여넣었을 때 추출된 텍스트가 보이면 설정이 제대로 된 것임
  • 파이썬에서는 subprocess.check_output()으로 같은 명령을 실행할 수 있음
import subprocess
file_path = '... some file path ...'
ocr_out = subprocess.check_output(
    f'shortcuts run ocr-text -i "{file_path}"', shell=True
)
print(ocr_out)
  • Shortcuts 공유가 이상하게 동작할 수 있어 수동 설정이 필요하며, 대부분의 과정은 한 번만 해두면 됨

댓글과 토론

Hacker News 의견들
  • OP 글 좋았음. Apple의 Vision 프레임워크가 꽤 인상적이었고, 스프레드시트 스크린샷 수만 장을 OCR로 읽어 PostgreSQL 데이터베이스에 넣는 개인 프로젝트에 써봤음
    macOS와 Nvidia가 아직 잘 맞지 않아서 Tesseract 같은 CPU 기반 OCR도 시도했지만 결과가 너무 자주 틀렸음. Vision 프레임워크는 내가 본 것 중 출력 품질이 가장 좋았고, 연산량도 가장 적게 썼음
    꽤 불안정하긴 했지만 내 구현 실수였을 가능성도 있음. 실제 구현에는 RHetTbull의 vision.py https://gist.github.com/RhetTbull/1c34fc07c95733642cffcd1ac5...를, 실험에는 ocrmac https://github.com/straussmaximilian/ocrmac을 함께 썼고, i7 6700k 해킨토시에서도 성능이 의외로 좋았음
    스스로를 프로그래머라고 부르진 않지만 시간이 충분하면 대체로 문제를 해결할 수 있었고, 대신 시간이 꽤 들었음

    • Tesseract보다 낫다면 정말 인상적임. macOS 머신들을 여러 대 돌려서 API 서비스로 만들고 돈을 벌 수 있을지, 법적으로 가능한지도 궁금함
    • Tesseract 단독 사용은 이제 꽤 널리 그저 그런 수준으로 알려져 있음
      RAG 프레임워크만 봐도 여러 구현을 쓰거나 지원하는 경우가 많고, Tesseract는 거의 항상 지원되지만 보통 이상적인 선택은 아님. Unstructured https://github.com/Unstructured-IO/unstructured-inference나 DocTR https://github.com/mindee/doctr 같은 프로젝트가 더 선호됨
      이들은 대체로 최신 수준의 비전 모델 https://github.com/mindee/doctr#models-architectures https://github.com/Unstructured-IO/unstructured-inference#mo...을 활용해서 Tesseract를 압도함
      Apple Vision 프레임워크와 직접 비교해보진 않았지만 Tesseract보다는 확실히 낫고, 잠재적으로는 Apple Vision보다도 나을 수 있음. 여러 방식을 조합하는 접근도 있지만 꽤 복잡해짐
    • Apple Vision Framework로 PDF나 이미지에서 표 구조를 추출하는 튜토리얼이 있는지 궁금함. 본문에 나온 두 링크를 시도해봤는데 표 구조는 유지하지 않고 텍스트만 뽑아냈음
      AWS Textract는 표를 CSV로 추출하는 Python 샘플 코드를 제공하고, 그건 잘 동작함
  • Windows에서 비슷한 걸 해보다가, 이미 설치해둔 Microsoft 프로젝트인 PowerToys에 꽤 좋은 OCR 도구가 들어 있다는 걸 알게 됨
    Win+Shift+T를 누르고 스캔할 영역을 선택하면 텍스트가 클립보드로 복사됨
    https://learn.microsoft.com/en-us/windows/powertoys/
    https://learn.microsoft.com/en-us/windows/powertoys/text-ext...

    • AutoHotkey와 PowerToys를 함께 써서 스크린샷 데이터를 CSV에 추가하고 있는데, 자체 키 매핑과 함께 잘 동작함
  • CLI와 괜찮은 UI를 둘 다 제공하는 오픈소스 도구를 만들었고 무료임
    https://trex.ameba.co

    • Trex를 매일 쓰고 있음. 손글씨와 엉망인 화면 캡처도 잘 처리해서 인상적임
  • Safari, Preview, Notes를 포함한 많은 Mac 앱이 이미지에 대해 OCR을 자동으로 수행한다는 걸 알게 됨. 이미지 속 텍스트를 쉽게 선택해서 다른 곳에 복사·붙여넣기할 수 있어 꽤 좋음

    • 품질이 좀 말도 안 될 정도로 좋음. YouTube 영상이 재생 중일 때도 영상 안의 텍스트를 선택할 수 있고, 필요하면 일시정지해도 됨
      URL이나 도메인 텍스트, QR 코드라면 포스터 사진이나 영상 안에서도 길게 누르거나 길게 클릭해서 이미지에서 바로 링크를 열 수 있음
    • Photos 앱도 마찬가지임. 콘퍼런스에서나 긴 문자열을 디지털화해야 할 때 정말 좋음. 예를 들어 기본 라우터 비밀번호 같은 것
      사진에서 선택하고 복사한 뒤, Handoff 기능을 통해 휴대폰이나 Mac에 붙여넣을 수 있음
  • MacBook에 brew로 설치해서 쓰는 작은 OCR 도구를 아주 좋아함: https://github.com/schappim/macOCR

    • 나도 같음. 내 용도에는 그 유틸리티를 macOS Shortcut으로 감싸서 메뉴 바에서 클릭하거나 Quicksilver로 실행할 수 있게 해두면 충분함
  • Windows에서는 PowerToys의 Text Extractor를 추천함
    https://learn.microsoft.com/en-us/windows/powertoys/text-ext...

  • 내 해결책도 하나 보태면 이거임: https://skaplanofficial.github.io/PyXA/tutorial/images.html#...
    PyXA는 Vision 프레임워크를 사용해서 하나 이상의 이미지에서 텍스트를 추출함. 패키지의 작은 일부라서 일회성 작업에는 과할 수 있지만 선택지는 됨

    • 참고로 더 오래되고 정확도가 낮은 API인 VNRecognizeTextRequest를 쓰고 있음
      ImageAnalyzer가 더 새롭고 훨씬 좋음. OP의 shortcut도 내부적으로는 예전 API를 쓰고 있을 가능성이 높아 보임
  • macOS Ventura 이후 버전에는 Image Capture UI에 기본 OCR 기능이 실제로 통합되어 있음
    AirPrint 호환 스캐너로 PDF 스캔을 할 때 오른쪽 패널에 “OCR” 체크박스가 나타남

  • 파일에 내용을 넣으려면 이렇게 할 수 있음. 가장 효율적이라고 하려는 건 아니지만 동작함
    OCRTHISFILE="ocr-test.jpg"
    shortcuts run ocr-text -i "${OCRTHISFILE}"
    pbpaste > ${OCRTHISFILE}.txt
    또는 출력을 보면서 파일에도 넣으려면:
    OCRTHISFILE="ocr-test.jpg"
    shortcuts run ocr-text -i "${OCRTHISFILE}"
    pbpaste | tee ${OCRTHISFILE}.txt

    • macOS Shortcuts에서 OCR 텍스트를 파일로 출력하게 해도 됨. 동작은 “Append to Text File”을 쓰면 됨
  • Apple Vision의 Copy Subject 기능에도 비슷한 기법이 있는지 궁금함. 이 기능에 꽤 의존하게 됐는데, 접근 방식이 너무 제한적으로 느껴짐