CommunityImagemgithub.com

GreenWich-art/agent-skills

OCR local usando o framework Vision do macOS. Ações: OCR, 识别图片文字, 提取截图内容, 扫描件转文字, 图片转文字, 扫描版PDF转文字, read text from image/screenshot/photo/scanned PDF. Prioriza o processamento local e offline; prefira-o ao OCR em nuvem sempre que os dados forem sensíveis ou a máquina estiver offline.

O que é agent-skills?

Esta skill habilita um agente a realizar OCR (Reconhecimento Óptico de Caracteres) localmente no macOS, utilizando o framework Vision da Apple através do comando `macocr`. Ela lida com imagens (PNG, JPG, HEIC, TIFF) e PDFs escaneados, convertendo-os em texto sem enviar dados para a nuvem, o que a torna ideal para dados sensíveis ou uso offline. O fluxo de trabalho principal é verificar o ambiente (garantindo que `macocr` esteja instalado e no macOS), converter PDFs em imagens com `sips`, executar o OCR e apresentar o resultado. Parâmetros como `--fast`, `--lang`, `--rect`, `--upscale` e `--orientation` permitem ajustar o reconhecimento para cenários complexos, como tabelas, textos pequenos ou imagens rotacionadas. A skill oferece orientações detalhadas para solucionar problemas de baixa precisão, priorizando métodos simples como solicitar a imagem original ou recortar a região de interesse, antes de partir para técnicas de pré-processamento de imagem (com Python e PIL) ou votação entre múltiplas versões. O documento alerta que, embora o motor seja o mesmo do aplicativo Fotos, a qualidade do resultado depende muito do pré e pós-processamento, e que para dados tabulares é crucial verificar manualmente números críticos. A skill recomenda não usá-la quando o modelo de IA já suporta leitura direta de imagens, para layout complexos (preferir MinerU) ou para lote de PDFs que podem ir para a nuvem.

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

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

macOS Vision OCR Local

Esta skill orienta você a converter imagens/PDFs fornecidos pelo usuário em texto: usando o mecanismo Vision nativo do macOS (o comando macocr) para reconhecimento local, sem enviar nenhum dado.

Verificação de Ambiente (Obrigatória)

Antes de executar qualquer comando de OCR, execute a verificação a seguir. Se qualquer condição não for atendida, pare e responda conforme indicado:

[ "$(uname -s)" = "Darwin" ] && echo OK-macOS
command -v macocr || ls "$HOME/.local/bin/macocr"
  • uname não retorna Darwin: esta ferramenta funciona apenas no macOS. Não tente instalar ou compilar; informe diretamente ao usuário que esta skill só está disponível no macOS e sugira alternativas de OCR.
  • macocr não encontrado: oriente o usuário a executar ./install.sh no diretório do pacote (a compilação requer Xcode Command Line Tools; no Apple Silicon, sem ambiente de compilação, o instalador cai automaticamente no binário pré-compilado incluso). Após a instalação, execute sh scripts/selftest.sh para um teste de ponta a ponta. Só prossiga após aprovação.

Após a instalação e autoteste, não é necessário repeti-los a cada sessão.

Fluxo Padrão de Execução de Tarefas

Siga estas etapas para processar solicitações de OCR do usuário, sem pular nenhuma:

  1. Identificar o tipo de entrada. Se o usuário fornecer uma imagem (png/jpg/jpeg/heic/tiff), vá direto para o passo 3; se for um PDF escaneado (sem camada de texto), primeiro vá para o passo 2 para converter em imagem.

  2. Converter PDF para imagem (apenas para PDFs escaneados). Use o sips nativo do sistema, com resolução inicial de 144 dpi:

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

    Observe que sips processa apenas uma página; para PDFs com várias páginas, é necessário especificar cada página ou usar o pymupdf com matriz 4x para renderizar (resultados significativamente melhores em slides com fontes pequenas, consulte "Como usar com PDF escaneado").

  3. Executar o reconhecimento. O comando padrão cobre a maioria dos cenários:

    macocr <caminho_da_imagem>            # Para múltiplas imagens, liste-as sequencialmente; a saída é separada por ===
    

    Adicione parâmetros conforme o cenário (tabela de parâmetros abaixo). O resultado é texto puro, já ordenado por linhas visuais.

  4. Entregar o resultado. Exiba o texto reconhecido diretamente ao usuário; para resultados com tabelas ou números densos, alerte o usuário de que os números críticos devem ser verificados novamente (consulte "Atenção especial para dados tabulares").

Referência Rápida de Parâmetros

ParâmetroUso
--fastDesativa a correção de idioma. Recomendado para tabelas e números, para evitar que números sejam "corrigidos" para valores estranhos
--lang zh-Hans+en-USPadrão para texto misto chinês/inglês. Defina en-US para apenas inglês (mais rápido); zh-Hant para chinês tradicional
--rect x,y,w,hReconhecer apenas uma região retangular (origem no canto superior esquerdo, em pixels). Use quando quiser extrair apenas uma tabela de uma imagem grande
--upscale NAmplia imagens pequenas e borradas (largura < 1000px, imagens encaminhadas, digitalizações antigas) usando Lanczos por um fator N (1.0–4.0). Use apenas quando a precisão do modo normal for baixa, testando progressivamente 2 → 3; ampliar imagens grandes e nítidas cegamente pode causar fusão de traços
--orientation up|left|right|180Corrige rotação/inversão manualmente. O Vision não corrige automaticamente com base no EXIF; fotos laterais devem usar este parâmetro
--list-langsLista os idiomas de reconhecimento suportados pela máquina (use para verificar a instalação; a saída deve conter zh-Hans)

Ordem de Ação para Baixa Precisão

Tente do mais simples ao mais complexo, sem pular para soluções complicadas logo de início:

  1. Obter a imagem original: imagens encaminhadas em chat têm precisão muito baixa; peça ao usuário o arquivo original
  2. Usar --rect para delimitar a área alvo, reduzindo ruído
  3. --upscale 2 (para imagens pequenas e borradas)
  4. --fast (para tabelas e números)
  5. Pré-processamento de imagem (recorte + escala de cinza + contraste automático + nitidez + binarização), exemplo abaixo
from PIL import Image, ImageOps, ImageEnhance
im = Image.open("src.JPG")
im.crop((x0, y0, x1, y1)).resize((w*2, h*2), Image.LANCZOS)   # recorte + ampliação
ImageOps.autocontrast(im.convert("L"))                         # escala de cinza + contraste automático
ImageEnhance.Sharpness(im).enhance(2.0)                        # nitidez
im.convert("L").point(lambda p: 255 if p > 128 else 0)         # binarização

Votação entre versões: para uma mesma tabela, gere 2–3 pré-processamentos diferentes, mantenha as partes consistentes e verifique individualmente os números divergentes. Validação cruzada: somar linhas/colunas completas e conferir; se bater, é provável que esteja correto; se não bater, algum número está errado.

Por que o Texto Vivo do aplicativo Fotos parece mais preciso do que a API pura?

O mesmo mecanismo Vision, a diferença está no pré e pós-processamento, não no modelo:

  1. Orientação: o Fotos corrige a orientação pelo EXIF antes de reconhecer; a API pura processa como .up por padrão → use --orientation para compensar
  2. Resolução: o Fotos usa a imagem original em resolução total; as imagens que circulam em fluxos de trabalho costumam ser versões compactadas → sempre prefira o arquivo original
  3. Downsampling implícito: NSImage renderiza por "pontos", e capturas de tela @2x/@3x junto com alguns HEIC podem perder metade dos pixels → esta ferramenta percorre os representantes e pega o bitmap de maior resolução
  4. Texto vertical: o Texto Vivo consegue processar texto vertical; a API pura fragmenta texto vertical em linhas quebradas → esta ferramenta detecta automaticamente e faz arbitragem de confiança
  5. Bônus de interatividade (não replicável completamente): o Texto Vivo permite selecionar partes, dando a sensação de "menos erros"; a linha de comando exibe o texto completo de uma vez, e qualquer caractere errado fica evidente

Conclusão: mesmo motor, o pipeline define o limite superior.

Atenção Especial para Dados Tabulares

OCR erra com mais frequência em tabelas: ponto decimal é engolido (. → ,), colunas adjacentes se fundem em uma sequência, linhas se misturam. Números críticos devem ser verificados novamente: se houver PDF original, extraia a camada de texto para comparar; se houver apenas foto, use votação entre versões + validação lógica de linhas e colunas.

Quando Não Usar Esta Ferramenta

CenárioEscolha mais adequada
O modelo de IA usado já suporta leitura de imagensDeixe o modelo ver a imagem diretamente, sem passar por OCR
Necessidade de reconstrução complexa de layout (multicolunas, fórmulas, estrutura de bordas de tabela)MinerU e outros serviços de análise de layout (os dados vão para a nuvem)
Lote de PDFs escaneados para converter em texto e pode enviar para a nuvemInterface de lote de serviços de OCR em nuvem

Regra: local primeiro, dados não são enviados para fora; só use a nuvem se precisar de maior precisão e após confirmar que os dados podem ser enviados.

Verificação e Solução de Problemas

  • Autoteste pós-instalação: sh scripts/selftest.sh (usa imagens de teste do pacote para validação de ponta a ponta, saída PASS/FAIL)
  • Lista de idiomas não contém zh-Hans: dados de idioma do sistema incompletos, muito raro; verifique se a versão do macOS é ≥ 13
  • Saída vazia ou totalmente errada: primeiro confirme que a imagem em si é legível (sips -g pixelWidth -g pixelHeight imagem), depois siga a "Ordem de Ação para Baixa Precisão" gradualmente

Requisitos de Sistema

  • macOS 13+ (automaticallyDetectsLanguage requer 13.0)
  • Compilação requer Xcode Command Line Tools (xcode-select --install); ou use o binário pré-compilado para Apple Silicon incluso (scripts/macocr-arm64, assinatura ad-hoc)

Descrição dos Arquivos do Pacote

ArquivoUsoQuando é necessário
install.shInstalar o macocr (compilação prioritária, fallback para pré-compilado)Quando a verificação de ambiente mostrar que macocr não existe
scripts/selftest.sh + scripts/selftest.pngAutoteste de ponta a ponta (script + imagem de teste inclusa)Verificação pós-instalação; ao investigar "reconhecimento anormal", execute primeiro para confirmar que a ferramenta em si está normal
scripts/vision_ocr.swiftCódigo-fonte (cerca de 200 linhas, auditável)Quando precisar compilar manualmente ou auditar
scripts/macocr-arm64Binário pré-compilado para Apple SiliconMáquinas Apple Silicon sem swiftc, usado automaticamente pelo 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.

Habilidades Relacionadas