Sobre o projeto

AksharaMD é um CLI e biblioteca em Python para avaliar quão bem um parser de documentos converteu um arquivo-fonte em Markdown adequado para ingestão por LLM. Em vez de anunciar uma figura média de precisão, ele produz um veredito de prontidão por documento para a saída específica do parser que você fornece. O fluxo principal recebe duas entradas: o documento-fonte original (por exemplo, um PDF ou DOCX) e o Markdown que seu parser produziu a partir dele. Em seguida, retorna uma Pontuação de Prontidão para IA de 0 a 100 com faixas de qualidade (ALTA em 85 ou mais, OK em 70, ARRISCADO em 50, RUIM abaixo de 50), tags de confiança de extração por bloco (EXTRAÍDO, INFERIDO, AMBÍGUO), códigos de aviso nomeados como OCR_REQUIRED, LOW_TEXT_DENSITY, GLYPH_ARTIFACTS, REPEATED_CONTENT, W_MULTICOLUMN_ORDER, W_TABLE_MISSING, W_ENCODING_ARTIFACTS e OCR_HALLUCINATION, e uma porta de avaliação opcional baseada na fonte que verifica se literais declarados (datas, IDs, valores monetários, entidades nomeadas) sobrevivem no Markdown, resultando em um veredito ACEITAR ou REJEITAR. O projeto é explicitamente agnóstico de parser e lista MarkItDown, Docling, marker, MinerU, LlamaParse e PyMuPDF4LLM como parsers cuja saída pode ser avaliada, juntamente com qualquer parser interno que emita Markdown. Um parser de referência incluído também está disponível para equipes sem um parser preferido, acessível pelo subcomando compile; o README enfatiza que este parser de referência é uma conveniência de fallback, não o produto em si. O README é incomumente franco sobre limites. Ele afirma que a prontidão é uma heurística não calibrada, não uma probabilidade de correção, e que uma pontuação alta apenas significa que poucas penalidades modeladas foram aplicadas. Ele explicitamente nega garantias sobre precisão de recuperação, correção da resposta final, correção de citações, particionamento ideal para um modelo de incorporação específico e diluição de incorporação. Figuras históricas de benchmark (comparações de tokens de saída, redução de ruído, taxa de transferência versus MarkItDown e Docling) são atribuídas ao parser de referência incluído na versão 0.3.3, não à pontuação de prontidão, e o README observa que elas não são automaticamente transferíveis para versões posteriores. O processamento é executado localmente. A instalação base não faz chamadas de rede para arquivos locais; o acesso à rede ocorre apenas para fontes remotas, como URLs HTTP/HTTPS ou S3, ou quando backends de ML opcionais baixam pesos de modelo no primeiro uso. Documentos não são enviados a um serviço operado pela AksharaMD. A instalação é via pip e requer Python 3.11 ou posterior. A instalação base cobre PDFs nativos, DOCX, XLSX, PPTX, HTML, EPUB, e-mail, arquivos, imagens e código em mais de 40 categorias de documentos e 118 extensões registradas. Extras opcionais adicionam OCR (Tesseract), reconstrução de tabelas baseada em visão (Marker), extração de matemática (pix2tex), transcrição de áudio (Whisper) e entrada S3. Uma instalação completa instala tudo, ao custo de cerca de 5-6 GB de pesos de modelo no primeiro uso. Sem os extras relevantes, páginas escaneadas emitem um aviso OCR_REQUIRED e uma pontuação de prontidão baixa, em vez de produzir silenciosamente saída ruim. O CLI inclui subcomandos para compile, assess, validate, benchmark, stats, show-manifest, corpus, mcp-config e formats. O comando assess é o fluxo principal de avaliação; compile executa o parser incluído de ponta a ponta e escreve document.md, document.json, manifest.json, validation.json e arquivos de chunk. Uma opção --min-readiness-score permite uso como porta de ingestão CI/CD, e --json produz saída legível por máquina. O comando corpus compila um diretório em chunks limitados por orçamento de tokens com detecção de quase duplicatas. A API Python expõe uma classe Compiler com compile_to_string, compile, compile_to_multimodal (retornando um array de conteúdo compatível com Anthropic com imagens base64 inline) e um método stream que produz blocos incrementalmente para alimentar um índice RAG ou armazenamento de vetores. Um objeto de contexto de compilação expõe campos de manifesto, como contagens de tokens, porcentagem de redução de tokens, pontuação de prontidão, tempo decorrido, contagens de tabelas e chunks, além de erros e avisos de validação. Um servidor MCP está incluído para hosts compatíveis com MCP, como Claude Desktop e Cursor, configurado através do subcomando mcp-config. O projeto é licenciado sob PolyForm Noncommercial.