Skip to main content
Glama
pdf-processor.ts3.2 kB
import fs from 'fs/promises'; // @ts-ignore const pdfParse = require('pdf-parse'); export interface ProcessInfo { numeroProcesso: string; tipoPeticao: string; classeProcessual: string; orgaoJulgador: string; assunto: string; } export async function extractProcessInfo(pdfPath: string): Promise<ProcessInfo> { try { console.log('Lendo arquivo PDF:', pdfPath); // Ler o arquivo PDF const pdfBuffer = await fs.readFile(pdfPath); console.log('Extraindo texto do PDF...'); // Extrair texto do PDF const data = await pdfParse(pdfBuffer); const fullText = data.text; console.log('Texto extraído do PDF:', fullText.substring(0, 500) + '...'); // Extrair número do processo usando regex const processoMatch = fullText.match(/\d{20}/); if (!processoMatch) { console.log('Número do processo não encontrado. Tentando outros formatos...'); // Tentar outros formatos comuns de número de processo const formatos = [ /\d{7}-\d{2}\.\d{4}\.\d{1,2}\.\d{2}\.\d{4}/, // 0000000-00.0000.0.00.0000 /\d{20}/, // 00000000000000000000 /\d{7}-\d{2}\.\d{4}\.\d{1,2}\.\d{2}\.\d{4}\.\d{4}/ // 0000000-00.0000.0.00.0000.0000 ]; for (const formato of formatos) { const match = fullText.match(formato); if (match) { console.log('Número do processo encontrado com formato alternativo:', match[0]); return { numeroProcesso: match[0], tipoPeticao: 'Petição Intermediária', classeProcessual: '', orgaoJulgador: '', assunto: '' }; } } throw new Error('Número do processo não encontrado no PDF'); } console.log('Número do processo encontrado:', processoMatch[0]); // Extrair tipo de petição (assumindo que é sempre "Petição Intermediária") const tipoPeticao = 'Petição Intermediária'; // Extrair classe processual (assumindo que está após "Classe:") const classeMatch = fullText.match(/Classe:\s*([^\n]+)/i); const classeProcessual = classeMatch ? classeMatch[1].trim() : ''; // Extrair órgão julgador (assumindo que está após "Órgão Julgador:") const orgaoMatch = fullText.match(/Órgão Julgador:\s*([^\n]+)/i); const orgaoJulgador = orgaoMatch ? orgaoMatch[1].trim() : ''; // Extrair assunto (assumindo que está após "Assunto:") const assuntoMatch = fullText.match(/Assunto:\s*([^\n]+)/i); const assunto = assuntoMatch ? assuntoMatch[1].trim() : ''; return { numeroProcesso: processoMatch[0], tipoPeticao, classeProcessual, orgaoJulgador, assunto }; } catch (error) { console.error('Erro ao processar PDF:', error); throw new Error('Erro ao processar o arquivo PDF'); } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/chapirousIA/pje-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server