PDF2Text — Local PDF & Image OCR MCP
Servidor MCP local para extrair texto e Markdown de PDFs, digitalizações e imagens. Usa texto nativo de PDF primeiro e OCR Apple Vision no macOS. Relata páginas ignoradas e avisos. Nenhuma chave de API de OCR necessária.
Documentação
PDF2Text
Servidor MCP local para agentes de IA e aplicativo para macOS: texto extraído de PDFs, digitalizações e fotos.
Conecte o PDF2Text a um agente com suporte a servidores MCP locais: o agente poderá ler o documento indicado e obter texto ou Markdown para busca, análise e trabalho com seus materiais. O texto pronto de PDFs é extraído diretamente; o OCR é acionado apenas para as páginas que precisam dele. Se páginas forem ignoradas, o agente recebe um aviso explícito.
Conectar MCP · Baixar aplicativo para macOS · Usar CLI
O reconhecimento é feito no seu computador. Ao usar via MCP, o texto extraído é enviado ao cliente; se o cliente usar um modelo em nuvem, o texto pode chegar ao provedor dele.
Início rápido: MCP
A primeira versão do MCP está disponível a partir do código-fonte. São necessários Git, Python 3.11+; para o Apple Vision integrado — macOS 13+. Instalação no Mac:
git clone https://github.com/Timur99/PDF2Text.git
cd PDF2Text
python3 -m venv .venv
.venv/bin/python -m pip install ".[mcp,vision]"
.venv/bin/pdf2text-mcp --help
Nas configurações do cliente MCP, informe o comando e os argumentos (substitua os caminhos absolutos):
{
"mcpServers": {
"pdf2text": {
"command": "/absolute/path/to/PDF2Text/.venv/bin/pdf2text-mcp",
"args": ["--allow-dir", "/absolute/path/to/documents"]
}
}
}
Este é um exemplo para clientes com configuração mcpServers. Em clientes com formulário
de conexão, use os mesmos command e args. O cliente inicia o servidor;
não é necessário abrir o aplicativo macOS para isso.
Exemplo de solicitação ao agente: "Use o PDF2Text, leia
/absolute/path/to/documents/report.pdf e destaque as principais conclusões".
extract_textretorna texto, informações sobre páginas e avisos.list_enginesmostra os mecanismos disponíveis.- Apenas os diretórios indicados via
--allow-direstão disponíveis. - No modo
auto, o OCR é limitado a 12 páginas. Para reconhecimento completo de uma digitalização, escolhavisionou peça isso ao agente. Limites gerais — 200 páginas de PDF e 80 MB.
Outros sistemas operacionais, parâmetros de ferramentas e detalhes de conexão — em MCP.md.

Principal diferença
OCR não é o primeiro passo. A maioria das ferramentas processa o PDF inteiro com reconhecimento, mesmo quando já existe uma camada de texto: isso é lento, esquenta o processador e estraga o que já estava perfeito.
O PDF2Text primeiro faz um triage: a biblioteca local pdf-inspector determina
o tipo de documento em milissegundos e extrai o texto diretamente das páginas onde
ele é legível. O reconhecimento é acionado apenas no restante.
Neste documento de 22 páginas, o reconhecimento foi necessário para apenas uma. As demais foram extraídas diretamente; o triage levou 8 ms. A célula azul no mapa de páginas é exatamente essa página; você pode clicar nela para visualizá-la separadamente.
A interface sempre mostra qual caminho gerou o resultado — native, ocr
ou hybrid — e quantas páginas passaram por reconhecimento. Se o sistema simplificou
ou cortou algo, isso é informado na tela, e não apenas nos logs.
Instalação do aplicativo a partir do código-fonte
São necessários Python 3.11+ e macOS.
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[vision]"
PaddleOCR é o mecanismo reserva, pesa centenas de megabytes e não é necessário para todos:
pip install -e ".[ocr]"
Aplicativo
local-ocr
# http://127.0.0.1:8765
Arraste um PDF ou uma foto para a janela. À esquerda — histórico de tarefas; à direita — resultado com mapa de páginas, fatos do triage e texto. Exportação para Markdown e TXT, exclusão da tarefa junto com o arquivo original.
Linha de comando
pdf2text scan.pdf > out.md
O progresso vai para o stderr, o resultado para o stdout, então a saída pode ser redirecionada e enviada via pipe. O documento é processado em um diretório temporário, que é removido ao final.
| Flag | O que faz |
|---|---|
-o, --output FILE | gravar em arquivo em vez de stdout |
-e, --engine auto|native|vision|paddleocr | modo de processamento (padrão: auto) |
-l, --lang ru | idioma de reconhecimento |
-f, --format md|txt|json | formato de saída (padrão: md) |
-q, --quiet | não exibir progresso |
Códigos de retorno: 0 — sucesso, 1 — erro de processamento, 2 — arquivo não encontrado.
Modos
| Modo | Quando usar |
|---|---|
| Automático | Para tudo. O texto é extraído diretamente; o reconhecimento, apenas onde não há texto |
| Somente nativo | Para PDFs com camada de texto pronta: instantâneo e preciso. Recusa-se a trabalhar em digitalizações |
| Apple Vision | Para digitalizações, fotos e páginas multicolunas. Forçado para todas as páginas |
| PaddleOCR | Reserva. Se o Vision falhar em um arquivo específico, ou o sistema não for macOS |
O mecanismo de reconhecimento padrão é o Apple Vision. Ele é integrado ao macOS, não ocupa espaço na compilação e, em uma medição de oito páginas, mostrou-se 16 vezes mais rápido que o PaddleOCR, com melhor ordem de leitura em páginas multicolunas: 4,3 s contra 68,4 s. Metodologia e números completos — em DECISIONS.md.
Como funciona o fluxo do documento
файл → проверка → triage (pdf-inspector)
├── страницы с текстом → берём напрямую
└── остальные страницы → OCR (Vision или PaddleOCR)
↓
сборка → Markdown / TXT / JSON
O domínio não conhece os SDKs dos mecanismos: o roteamento usa funções puras em
backend/domain/routing.py, e os mecanismos ficam atrás de um protocolo comum em
backend/engines/. Um novo mecanismo é adicionado via adaptador, sem alterar API ou UI.
Privacidade
- O servidor web escuta apenas em
127.0.0.1; o MCP usa stdio e não abre porta. - Triage e OCR funcionam localmente; o servidor não envia o arquivo original para lugar nenhum.
- O MCP envia o texto extraído ao cliente. O envio posterior para um modelo em nuvem depende do cliente e das configurações dele.
- O conteúdo dos documentos não é gravado em logs.
- Não há telemetria.
Compilação do aplicativo para macOS
.venv/bin/pyinstaller desktop/pdf2text.spec --noconfirm \
--distpath desktop/dist --workpath desktop/build
./desktop/build_app.sh
O resultado é desktop/dist/PDF2Text.app e PDF2Text-<версия>.dmg. Detalhes e
identificadores de compilação — em desktop/README.md.
Documentação
| Documento | Sobre o quê |
|---|---|
| ARCHITECTURE.md | Componentes, camadas, contratos dos mecanismos |
| DESIGN.md | Interface: tokens, componentes, estados |
| DECISIONS.md | Registro de decisões com justificativas e medições |
| PROJECT_PLAN.md | Etapas e critérios de prontidão |
| MCP.md | Instalação do servidor MCP, conexão e contrato das ferramentas |
| SPEC-stage-1.5.md | Especificação da etapa atual |
Testes
pip install -e ".[dev,vision]"
pytest