Communitygithub.com

PDF → Markdown (MinerU)

Converte PDFs (especialmente artigos acadêmicos) em Markdown limpo usando MinerU — preserva ordem de leitura, equações LaTeX, tabelas e figuras, e roda na GPU. Use quando o usuário pedir para converter/extrair um PDF para markdown/texto.

O que é PDF → Markdown (MinerU)?

Esta skill converte PDFs (principalmente artigos acadêmicos) em Markdown estruturado e limpo usando o mecanismo de código aberto MinerU (opendatalab/MinerU), reconhecido por sua alta fidelidade na preservação da ordem de leitura, hierarquia de cabeçalhos, equações LaTeX inline ($...$), tabelas (como HTML) e figuras extraídas. A execução ocorre em um ambiente isolado com aceleração GPU (CUDA), garantindo desempenho otimizado para documentos com layout colunar e elementos matemáticos. Suporta também imagens, DOCX, PPTX e XLSX, e oferece fallback para MarkItDown em documentos de escritório não acadêmicos. A skill é invocada diretamente pelo nome ou quando o usuário solicita conversão de PDF para Markdown/texto, sem necessidade de digitar o nome da skill. O wrapper personalizado (convert.py) evita problemas conhecidos da CLI do MinerU (como erros 502 no Windows), garantindo consistência entre plataformas.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Peytontalismanic424/paper-share-skills/tree/HEAD/pdf-to-markdown

Perguntar na sua IA favorita

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

Documentação

O que PDF → Markdown (MinerU) faz?

Converte PDFs em Markdown limpo e preservador de estrutura usando MinerU (opendatalab/MinerU), o motor open-source de maior fidelidade para artigos acadêmicos. Executa o backend do pipeline na GPU (CUDA). A saída mantém a hierarquia de cabeçalhos, matemática LaTeX inline ($...$), figuras e tabelas (como HTML).

Quando usar

  • O usuário pede para "converter / extrair / transformar este PDF em markdown (ou texto)."
  • Melhor para: artigos acadêmicos — layouts com múltiplas colunas, matemática LaTeX, tabelas, referências.
  • Também lida com imagens, .docx, .pptx, .xlsx (passe o arquivo diretamente).

Como executar

O MinerU vive em um ambiente isolado dedicado e é acionado através do wrapper convert.py incluso, que chama a API Python do MinerU em processo.

Não use a CLI mineru aqui — na versão 3.4.0 ela inicia um servidor API local que retorna 502 Bad Gateway no Windows. O wrapper contorna isso.

"$MINERU_PYTHON" \
  "<SKILLS_DIR>/pdf-to-markdown/convert.py" \
  "<input.pdf>" "<output_dir>" --lang en
  • Arg 1 — arquivo de entrada (pdf/imagem/docx/pptx/xlsx).
  • Arg 2 — diretório de saída.
  • --lang — dica de idioma OCR: en para inglês, ch para chinês/misto (padrão ch, que também lida com inglês). Afeta apenas páginas escaneadas (OCR).
  • O script imprime DONE -> <caminho para .md> em caso de sucesso.

Estrutura de saída

<output_dir>/<nome>/auto/<nome>.md       # o markdown
<output_dir>/<nome>/auto/images/          # figuras extraídas (referenciadas do md)
<output_dir>/<nome>/auto/<nome>_*.json    # metadados de layout/conteúdo (podem ser ignorados)

Após a conversão

  1. Leia o caminho DONE -> ...md impresso e informe ao usuário.
  2. Opcionalmente, mostre uma prévia curta (título + primeiros cabeçalhos).
  3. Anote onde as imagens extraídas foram salvas.
  4. A qualidade geralmente é alta: cabeçalhos como #, matemática inline como $...$, tabelas como HTML <table> (com LaTeX dentro das células). Se um PDF escaneado sair ilegível, execute novamente com --method ocr.

Pré-requisitos / configuração (apenas se algo estiver faltando)

  • Interpretador com MinerU (env MINERU_PYTHON, padrão python).
  • Verifique CUDA: $MINERU_PYTHON -c "import torch; print(torch.cuda.is_available())" → True.
  • Modelos são pré-baixados para ~/.cache/huggingface/hub/ (uma vez).

Se o ambiente estiver faltando, recrie-o (instale uv primeiro se necessário):

uv venv --python 3.12 "<seu-env>"
uv pip install --python "<seu-env>/Scripts/python.exe" torch torchvision --index-url https://download.pytorch.org/whl/cu124
uv pip install --python "<seu-env>/Scripts/python.exe" -U "mineru[core]"
"<seu-env>/Scripts/mineru-models-download.exe" -s huggingface -m pipeline

Em seguida, defina MINERU_PYTHON como <seu-env>/Scripts/python.exe (Windows) ou <seu-env>/bin/python (macOS/Linux). No macOS/Linux, o binário de download de modelos é mineru-models-download (sem sufixo .exe).

Solução de problemas

  • cuda.is_available() é False → reinstale o torch a partir do índice cu124 (veja configuração). O pipeline ainda roda na CPU se necessário, apenas mais devagar.
  • Falha no download de modelos / lento → execute mineru-models-download novamente com -s modelscope.
  • PDF escaneado ilegível → adicione --method ocr à chamada do convert.py.
  • Backends vlm-engine / hybrid-engine → estes precisam de vLLM/SGLang (Linux); eles geram 502 no Windows. Mantenha o backend pipeline padrão usado pelo wrapper.

Fallback leve (documentos simples / Office)

Para arquivos que não são artigos, onde a fidelidade de layout não importa, o MarkItDown da Microsoft é mais rápido e simples — mas ele danifica PDFs acadêmicos de duas colunas e tabelas, portanto prefira MinerU para artigos:

"$MINERU_PYTHON" -m pip install markitdown
"$MINERU_PYTHON" -m markitdown "<input>" > out.md

Individual skills in this repo

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

Peytontalismanic424/paper-share-skills

Validate and upload narrated paper videos to Bilibili with biliup. Handles required landscape-first/portrait-second submissions, series uploads, CST scheduling, diagnostics, dry-run validation, and durable upload receipts. Trigger on: "upload to bilibili", "bilibili upload", "发布到B站", "上传到B站".

Peytontalismanic424/paper-share-skills

Download the TeX source (e-print tar.gz) of an arXiv paper from an arXiv URL or bare ID, and unpack it into paper_src/. Use FIRST whenever a pipeline input is an arXiv link and the TeX source is preferred over the PDF (paper-to-beamer, paper-to-bilibili, paper-venue-discovery). Invoke with an arXiv URL (abs/pdf/e-print, arxiv.org or export.arxiv.org) or a bare ID like 2509.07996v4.

Peytontalismanic424/paper-share-skills

Convert Beamer PDF slides into a fail-closed narrated MP4 with page-aligned narration, TTS audio, cover, and upload metadata. Trigger on narrated slides, slide video, or paper video requests.

Peytontalismanic424/paper-share-skills

Automated pipeline: paper (PDF or TeX source) → SUSTech Beamer slides (11-section 论文分享 structure) → compiled PDF. When TeX source is available, skip MinerU and extract content directly from LaTeX. Use when the user asks to create Beamer slides from an academic paper, or says "论文分享", "paper to slides", "make beamer from paper". Invoke with an absolute or relative path to a PDF, .tar.gz TeX archive, .tex file, or an arXiv URL/ID (source TeX is downloaded first via skill://paper-download-arxiv-paper-source).

Peytontalismanic424/paper-share-skills

Orchestrate a paper PDF through MinerU, SUSTech Beamer slides, complete Chinese narration, landscape and portrait video, metadata gates, and Bilibili upload. Supports single-paper and batch slides, video, or bilibili phases. Trigger on full paper-to-Bilibili requests, PDF-to-video publication, and batch paper publishing.

Peytontalismanic424/paper-share-skills

Generate a deterministic 16:10 video-cover poster from a paper directory. Extracts paper metadata and figures and atomically produces poster.tex, poster.pdf, and poster.png. Use for paper-video covers, not conference posters.

Peytontalismanic424/paper-share-skills

Fix for undefined \setsource/\setdomains/\setpresenter/\setvenue commands when compiling SUSTech Beamer slides from the standard template. Copy the extended beamerthemesustech.sty from the sustech-slides-template repository.

Habilidades Relacionadas