Skip to content

aka-sacci-ccr/pdf-script

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PDF Link Extractor

Extrator inteligente de links e texto de arquivos PDF com referências de hyperlinks.

🚀 Funcionalidades

  • Extração de hyperlinks clicáveis (annotations do PDF)
  • Extração de texto legível (múltiplos métodos)
  • Referências de hyperlinks no texto (contexto inteligente)
  • Detecção de emails
  • Saída em JSON (dados estruturados)
  • Múltiplos métodos de fallback

📋 Pré-requisitos Obrigatórios

1. Bun (Runtime JavaScript)

# macOS
curl -fsSL https://bun.sh/install | bash

# Ubuntu/Debian
curl -fsSL https://bun.sh/install | bash

# Windows
powershell -c "irm bun.sh/install.ps1 | iex"

2. Poppler Utils (pdftotext)

# macOS
brew install poppler

# Ubuntu/Debian
sudo apt-get install poppler-utils

# Windows
scoop install poppler

📦 Instalação

# Clone o repositório
git clone git@github.com:aka-sacci-ccr/pdf-script.git
cd pdf-script

# Instale as dependências
bun install

🎯 Uso

📄 Arquivo Único

# Extrair links e texto de um PDF
bun run extract arquivo.pdf

# Exemplo
bun run extract documento.pdf

📁 Conversão em Lote

# Processar todos os PDFs de uma pasta
bun run batch-extract ./pasta-pdfs/

# Exemplo básico
bun run batch-extract ./confluence/
bun run batch-extract .

# Com pasta de saída personalizada
bun run batch-extract ./confluence/ --output ./resultados/

# Preservando estrutura de pastas
bun run batch-extract ./confluence/ --output ./saida/ --preserve-structure

🚩 Opções de Conversão em Lote

  • --output <pasta>: Define onde salvar os arquivos JSON
  • --preserve-structure: Mantém a mesma estrutura de pastas da origem

📊 Saída

O script gera um arquivo JSON com:

{
  "text": "Texto completo extraído do PDF...",
  "hyperlinks": ["https://exemplo.com", "..."],
  "textUrls": ["URLs encontradas no texto..."],
  "urls": ["Todos os links únicos..."],
  "emails": ["email@exemplo.com"],
  "hyperlinkReferences": [
    {
      "url": "https://exemplo.com",
      "text": "Texto relacionado ao link",
      "context": "Contexto onde o link aparece",
      "position": 1234,
      "line": 15,
      "type": "related_text"
    }
  ],
  "pages": 3,
  "metadata": {
    "extractor": "pdftotext"
  }
}

🔧 Métodos de Extração

  1. pdftotext (mais confiável - requer poppler-utils)
  2. pdf-parse (biblioteca JavaScript)
  3. pdf-lib (objetos de página)
  4. Extração raw (regex e streams)

📝 Exemplo de Referências Detectadas

// Padrões suportados:
[Texto](@URL)           // [Formulário](@https://exemplo.com)
[Texto](URL)            // [Formulário](https://exemplo.com)
"Texto" (URL)           // "Formulário" (https://exemplo.com)
Texto (URL)             // Formulário (https://exemplo.com)

// Contexto inteligente:
...texto antes do link... https://exemplo.com ...texto depois...

🔄 Conversão em Lote

O script batchConvert.js processa múltiplos PDFs de uma pasta:

✨ Funcionalidades

  • Processamento recursivo (inclui subpastas)
  • Resumo detalhado com estatísticas
  • Tratamento de erros individual por arquivo
  • Tempo de processamento por arquivo
  • Arquivo JSON para cada PDF processado
  • Pasta de saída personalizada (--output)
  • Preservação de estrutura (--preserve-structure)

📊 Exemplo de Saída

🔄 Iniciando conversão em lote da pasta: ./pdfs/

📁 Encontrados 3 arquivos PDF:
   1. documento1.pdf
   2. documento2.pdf
   3. documento3.pdf

📄 [1/3] Processando: documento1.pdf
✅ Concluído em 1250ms
   📊 Páginas: 5
   🔗 Hyperlinks: 8
   📧 Emails: 2
   📍 Referências: 3
   💾 Salvo em: documento1_data_2025-01-18T14-30-15-123Z.json

============================================================
📊 RESUMO DA CONVERSÃO EM LOTE
============================================================
✅ Arquivos processados com sucesso: 3
❌ Arquivos com erro: 0
📁 Total de arquivos: 3
🔗 Total de hyperlinks encontrados: 24
📧 Total de emails encontrados: 6
📍 Total de referências encontradas: 9

🎉 Conversão em lote concluída!

🛠️ Desenvolvimento

# Executar arquivo único
bun main.js arquivo.pdf

# Executar conversão em lote
bun batchConvert.js ./pasta/

# Verificar dependências
which pdftotext
which bun

📄 Licença

MIT License

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors