Community이미지github.com

macOS Vision 本地 OCR

macOS Vision 프레임워크를 사용한 로컬 OCR. 트리거: OCR, 识别图片文字, 提取截图内容, 扫描件转文字, 图片转文字, 扫描版PDF转文字, read text from image/screenshot/photo/scanned PDF. 로컬 우선 및 오프라인 동작; 데이터가 민감하거나 기기가 오프라인일 때 클라우드 OCR보다 선호합니다.

macOS Vision 本地 OCR란 무엇인가요?

이 스킬은 macOS Vision 프레임워크를 기반으로 한 로컬 OCR 도구로, 이미지나 PDF에서 텍스트를 추출합니다. `macocr` 명령어를 사용하여 모든 처리를 기기 내에서 완료하므로, 민감한 데이터를 외부로 전송하지 않아도 됩니다. 주로 macOS 13 이상 환경에서 작동하며, Apple Silicon 및 Intel Mac을 모두 지원합니다. 사용자는 이미지 파일(주요 포맷)과 스캔된 PDF(텍스트 레이어 없음)를 입력으로 제공할 수 있으며, 스킬은 자동으로 적절한 처리 흐름(확인 → 변환 → 인식 → 결과 반환)을 수행합니다. 인식 정확도가 낮을 경우, 단계별 최적화(영역 지정, 업스케일, 이미지 전처리 등)를 통해 결과를 개선할 수 있습니다. 이 스킬은 Claude Code, Cursor, Codex 등 다양한 AI 에이전트와 호환되며, 로컬 우선 원칙을 따르므로 데이터 보안이 중요한 환경에 이상적입니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/GreenWich-art/agent-skills/tree/HEAD/skills/macos-vision-ocr

Installed? Explore more 이미지 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

macOS Vision 로컬 OCR

이 Skill은 사용자가 제공한 이미지/PDF를 텍스트로 변환하는 방법을 안내합니다: macOS 시스템 내장 Vision 엔진 (macocr 명령어)을 사용하여 로컬에서 완료하며, 어떤 데이터도 업로드하지 않습니다.

환경 확인 (필수)

OCR 명령어를 호출하기 전에 먼저 다음 확인을 실행하세요. 어느 하나라도 충족되지 않으면 중단하고 설명에 따라 응답하세요:

[ "$(uname -s)" = "Darwin" ] && echo OK-macOS
command -v macocr || ls "$HOME/.local/bin/macocr"
  • uname이 Darwin이 아님: 이 도구는 macOS만 지원합니다. 설치나 컴파일을 시도하지 말고 사용자에게 이 Skill은 macOS에서만 사용 가능하다고 알리고, 다른 OCR 방식을 사용하도록 제안하세요.
  • macocr이 없음: 이 패키지 디렉토리에서 ./install.sh를 실행하도록 안내하세요 (컴파일에는 Xcode Command Line Tools 필요; Apple Silicon에서 컴파일 환경이 없으면 자동으로 포함된 사전 컴파일 바이너리로 대체됨). 설치가 완료되면 sh scripts/selftest.sh로 종단 간 자체 검사를 수행하고 통과한 후 계속하세요.

설치와 자체 검사가 완료되면 각 세션마다 반복할 필요가 없습니다.

작업 실행의 표준 절차

사용자의 OCR 요청을 처리할 때는 다음 단계를 순서대로 따르고 건너뛰지 마세요:

  1. 입력 유형 확인. 사용자가 제공한 것이 이미지(png/jpg/jpeg/heic/tiff)라면 바로 3단계로 이동; 스캔된 PDF(텍스트 레이어 없음)라면 먼저 2단계로 가서 이미지로 변환하세요.

  2. PDF를 이미지로 변환 (스캔된 PDF만 필요). 시스템 내장 sips 사용, 144dpi 기본:

    sips -s format png -s dpiHeight 144 -s dpiWidth 144 입력.pdf --out /tmp/p1.png
    

    참고: sips는 단일 페이지만 처리합니다. 다중 페이지 PDF는 페이지별로 지정하거나, pymupdf가 있으면 4배 행렬 렌더링 사용 (작은 글씨 강의자료에 효과 더 좋음, '스캔된 PDF 사용 방법' 참조).

  3. 인식 실행. 기본 명령어로 대부분의 경우를 커버할 수 있습니다:

    macocr <이미지_경로>          # 여러 이미지는 순서대로 나열, 출력은 ===로 구분
    

    상황에 따라 매개변수 추가 (매개변수 표는 아래 참조). 인식 결과는 순수 텍스트이며 시각적 줄 순서로 정렬됩니다.

  4. 결과 전달. 사용자에게 인식된 텍스트를 직접 보여줍니다. 표/숫자가 밀집된 결과는 반드시 사용자에게 주요 숫자는 재확인이 필요하다고 알리세요 ('표 데이터 특별 주의' 참조).

매개변수 참조

매개변수용도
--fast언어 교정 끄기. 표 및 숫자 상황에서 추천, 숫자가 이상한 값으로 '교정'되는 것을 방지
--lang zh-Hans+en-US기본 중영 혼합. 순수 영어는 en-US로 설정하여 속도 향상; 번체는 zh-Hant 사용
--rect x,y,w,h사각형 영역만 인식 (왼쪽 위 원점, 픽셀). 큰 이미지에서 특정 표만 추출할 때 사용
--upscale N흐릿한 작은 이미지(폭 <1000px의 전송 이미지, 오래된 스캔본)를 먼저 Lanczos로 N배 확대 (1.0–4.0). 일반 모드에서 인식률이 낮을 때만 2 → 3 순서로 시도, 선명한 큰 이미지에 무분별한 확대는 획 연결을 초래
--orientation up|left|right|180사진 회전/뒤집힘 시 수동으로 바로잡기. Vision은 EXIF를 기준으로 자동 회전하지 않으므로, 옆으로 찍은 사진은 반드시 이 매개변수 사용
--list-langs이 기기에서 지원하는 인식 언어 목록 출력 (설치 자체 검사용, 출력에 zh-Hans가 포함되어야 함)

인식률 낮을 때 처리 순서

비용이 낮은 순서부터 시도하고, 처음부터 복잡한 방안을 적용하지 마세요:

  1. 원본 이미지 찾기: 채팅 전송 이미지 인식률이 매우 낮음. 먼저 사용자에게 원본 파일을 요청
  2. --rect로 목표 영역을 지정하여 노이즈 줄이기
  3. --upscale 2 (흐릿한 작은 이미지)
  4. --fast (표 숫자 상황)
  5. 이미지 전처리 (자르기 + 그레이스케일 + 자동 대비 + 선명화 + 이진화), 예시는 아래 참조
from PIL import Image, ImageOps, ImageEnhance
im = Image.open("src.JPG")
im.crop((x0, y0, x1, y1)).resize((w*2, h*2), Image.LANCZOS)   # 자르기 + 확대
ImageOps.autocontrast(im.convert("L"))                         # 그레이스케일 + 자동 대비
ImageEnhance.Sharpness(im).enhance(2.0)                        # 선명화
im.convert("L").point(lambda p: 255 if p > 128 else 0)         # 이진화

다중 버전 투표: 동일한 표에 대해 2–3가지 전처리를 실행하고 일치하는 부분을 취하며, 일치하지 않는 숫자는 개별적으로 재확인. 교차 검증: 전체 행/열 합계가 맞으면 대체로 신뢰 가능; 맞지 않으면 특정 숫자가 잘못된 것임.

왜 '사진' 앱의 라이브 텍스트가 순수 API 호출보다 정확한가?

동일한 Vision 엔진이며, 차이는 전후 처리에서 옵니다. 모델 자체의 문제가 아닙니다:

  1. 방향: '사진' 앱은 EXIF에 따라 회전을 보정한 후 인식; 순수 API 호출은 기본적으로 .up 방향으로 처리 → --orientation으로 보완
  2. 해상도: '사진' 앱은 전체 해상도 원본을 사용; 워크플로우에서 전달되는 것은 종종 압축된 미리보기 이미지 → 항상 원본 파일을 우선 사용
  3. 암시적 다운샘플링: NSImage는 '포인트' 단위로 이미지를 출력, @2x/@3x 스크린샷과 일부 HEIC는 절반의 픽셀이 제거됨 → 이 도구는 rep을 순회하여 최대 픽셀 비트맵을 사용
  4. 세로 텍스트: 라이브 텍스트는 세로 텍스트를 처리 가능; 순수 API 호출은 세로 텍스트를 조각으로 나누어 버림 → 이 도구는 자동 감지 후 신뢰도 중재 수행
  5. 상호작용 이점 (완전히 복제 불가): 라이브 텍스트는 부분 선택을 허용하여 '오류가 적다'는 인식을 줌; 명령줄은 전체 텍스트를 한 번에 출력하므로 모든 오타가 눈에 띔

결론: 엔진은 동일, 파이프라인이 상한을 결정한다.

표 데이터의 특별 주의

OCR은 표에서 가장 오류가 발생하기 쉽습니다: 소수점이 사라짐(. → ,), 인접 열이 하나의 문자열로 합쳐짐, 행 혼동. 주요 숫자는 반드시 재확인: PDF 원본이 있으면 텍스트 레이어를 추출하여 대조; 사진만 있다면 다중 버전 투표 + 행-열 논리 검증에 의존.

이 도구를 사용하지 말아야 할 경우

상황더 적합한 선택
사용 중인 AI 모델 자체가 이미지 읽기 가능OCR을 거치지 않고 모델에게 직접 이미지를 보여주세요
복잡한 레이아웃 복원 필요 (다중 열, 수식, 표 테두리 구조)MinerU 등 레이아웃 수준 분석 서비스 (데이터는 클라우드로 전송됨)
전체 스캔 PDF를 일괄 텍스트 변환하고 클라우드 사용 가능클라우드 OCR 서비스의 일괄 인터페이스

규칙: 로컬 우선, 데이터 외부 전송 금지; 더 높은 정밀도가 정말 필요하면 클라우드를 사용하되 데이터를 외부로 보내도 되는지 먼저 확인하세요.

검증 및 문제 해결

  • 설치 후 자체 검사: sh scripts/selftest.sh (패키지 내 테스트 이미지로 종단 간 검증, PASS/FAIL 출력)
  • 언어 목록에 zh-Hans가 없음: 시스템 언어 데이터 불완전, 매우 드물음; macOS 버전이 ≥ 13인지 확인
  • 출력이 비었거나 전부 오류: 먼저 이미지 자체를 읽을 수 있는지 확인 (sips -g pixelWidth -g pixelHeight 이미지), 그런 다음 '인식률 낮을 때 처리 순서'에 따라 단계별 시도

시스템 요구 사항

  • macOS 13+ (automaticallyDetectsLanguage는 13.0 필요)
  • 컴파일에는 Xcode Command Line Tools 필요 (xcode-select --install); 또는 포함된 Apple Silicon 사전 컴파일 바이너리 사용 (scripts/macocr-arm64, ad-hoc 서명)

패키지 내 파일 설명

파일용도필요한 경우
install.shmacocr 설치 (컴파일 우선, 사전 컴파일 대비)환경 확인에서 macocr이 없음을 발견했을 때
scripts/selftest.sh + scripts/selftest.png종단 간 자체 검사 (스크립트 + 자체 테스트 이미지)설치 후 검증; '인식 이상' 문제 해결 시 먼저 실행하여 도구 자체가 정상인지 확인
scripts/vision_ocr.swift소스 코드 (약 200줄, 감사 가능)직접 컴파일하거나 감사가 필요할 때
scripts/macocr-arm64Apple Silicon 사전 컴파일 바이너리swiftc가 없는 Apple Silicon 기기에서 install.sh가 자동으로 사용

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

GreenWich-art/agent-skills

桌面 GUI 操作的统一编排入口。当用户要求操作一个只有图形界面的应用(改设置、点按钮、填表单、操作无 CLI/连接器的软件)时使用此 skill。提供四级能力:①路由决策——判断任务该走连接器、浏览器控制、Office 技能、命令行还是 computer use 桌面接管;②授权引导——检测并引导用户完成 macOS 辅助功能/屏幕录制权限授权,处理授权不生效等常见坑;③任务派发与验证——按目标/边界/失败处理三段式描述派发 GUI 任务,并以最终截图为准确认结果;④AX 兜底层——内置 axctl 工具做元素级无障碍读写(AXPress 语义点击,不碰鼠标不抢焦点),适用于 computer use 不可用或轻量场景。台前调度全场景实测(macOS 15 + 27.0.1 复检)。触发词:操控电脑、操作某个软件、点某个按钮、GUI 操作、电脑设置。

GreenWich-art/agent-skills

按学术论文规范(小三黑体一级标题/四号黑体二级/小四正文宋体1.5倍行距/三线表/中西文混排Times New Roman/统计量斜体) 批量重整 Markdown 或已有 docx 的格式。用户说"按学术格式排版""三线表""小三号黑体标题""1.5倍行距" "数字英文用Times New Roman""P值斜体"时使用。基于 python-docx 直接生成 docx,不走逐段插入。 不适用:高校课程论文/作业的字体字号约定(标准不同);党政机关公文国标 GB/T 9704 (又是另一套标准)。三套标准不可混用。

GreenWich-art/agent-skills

参考文献的 GB/T 7714-2015 著录规范化,以及 URL / DOI / PMID / PMC 链接的 可访问性批量核验与"假失效"识别。 触发场景: - 论文 / 综述 / 作业要交,需要核对参考文献格式 - "帮我按国标改一下参考文献" - 要交付一份文献清单,需要确认链接没死 - 已经有一堆 links,要批量验证哪些还能打开 含一个可复用脚本 `scripts/check_refs.py`,能自动判别 URL / DOI / PMID / PMC 并并发核验,且能区分「真死」与「被反爬」——后者不该判为失效。 不适用:从零生成一份带引文的正文(那是写作任务); Zotero 样式定制(见正文第六节,按需手工改 CSL)。

GreenWich-art/agent-skills

Download open-access biomedical article PDFs from PMC with offline Proof-of-Work solving. Triggers: 下载文献PDF, PMC PDF, 403/404 on PDF link, Preparing to download, reCAPTCHA page, OA full text, supplementary files, download paper PDF.

관련 스킬