AI-Powered Document Processing System
TransferLog PHP is an intelligent document processing application that uses artificial intelligence to automatically extract structured data from educational documents (PDFs and Excel files) and generate professional receipts.
Key Features
AI Processing
OpenAI GPT integration for intelligent data extraction
Multi-Format Support
Process PDF and Excel documents seamlessly
Automated Processing
Background processing with real-time status updates
Processing Pipeline
1. Document Upload
Secure file upload with validation
2. Text Extraction
Extract readable text from PDFs/Excel
3. AI Analysis
OpenAI GPT processes chunks for structured data
4. Data Merging
Combine results into final dataset
5. Receipt Generation
Create professional Excel receipts
System Requirements
- PHP: 8.1 or higher
- Database: MySQL 5.7+
- Storage: 500MB+ free space
- OpenAI API: Valid API key required
Automated Installation
The easiest way to install TransferLog PHP is using the automated installer:
# Download and extract the application
cd /path/to/web/root/
unzip transferlog-php.zip
# Run the automated installer
php install.php
The installer will:
- Create the database and tables
- Run all migrations
- Create necessary directories
- Set up default admin user
- Validate system requirements
Manual Installation
If you prefer manual setup:
Step 1: Database Setup
# Create database
mysql -u root -p
CREATE DATABASE transferlog_db;
GRANT ALL PRIVILEGES ON transferlog_db.* TO 'transferlog_user'@'localhost' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
EXIT;
# Import schema
mysql -u transferlog_user -p transferlog_db < database/database.sql
Step 2: Configuration
Edit config/database.php with your database credentials:
return [
'host' => 'localhost',
'dbname' => 'transferlog_db',
'username' => 'transferlog_user',
'password' => 'your_password'
];
Step 3: OpenAI Setup
Add your OpenAI API key to config/config.php:
'openai' => [
'api_key' => 'your-openai-api-key-here'
]
Step 4: Permissions
chmod 755 uploads/ receipts_generated/ logs/ temp/
Step 5: Run Migrations
php migrate.php run
Installation Complete!
Access your application at: https://yourdomain.com/transferlog-php/
Logging In
Access the application login page and use your credentials:
Default Admin Account:
- Username: admin
- Password: admin123
Change the default password after first login!
Navigation
After login, you'll see the main dashboard with:
- Upload: Upload new documents
- Jobs: Monitor processing status
- Results: View extracted data
- Receipts: Download generated receipts
Supported File Types
PDF Files
- Scanned documents
- Text-based PDFs
- Up to 50MB per file
- OCR support for scanned content
Excel Files (.xlsx, .xls)
- Structured spreadsheets
- Educational data tables
- Up to 50MB per file
- Multiple worksheet support
Upload Process
1. Navigate to Upload Page
Click "Upload" in the main navigation or go to /upload
2. Select File
Choose your PDF or Excel file using the file picker
3. Add Description (Optional)
Provide a description to help identify the document
4. Click Upload
The system will validate and queue your file for processing
5. Monitor Progress
Check the Jobs page to see processing status
Upload Guidelines
- File Size: Maximum 50MB per file
- Content: Educational documents with school/distribution data
- Format: Clear, readable documents work best
- Language: Portuguese content optimized
TransferLog PHP uses a sophisticated multi-stage processing pipeline:
Stage 1: Text Extraction
Extract readable text from PDF/Excel files
Stage 2: Document Chunking
Split text into manageable chunks for AI processing
Stage 3: AI Analysis
OpenAI GPT extracts structured educational data
Stage 4: Result Merging
Combine all chunk results into final dataset
Stage 5: Receipt Generation
Create professional Excel receipts automatically
Processing Time
Typical processing times:
- Small document (1-2 pages): 2-5 minutes
- Medium document (5-10 pages): 5-15 minutes
- Large document (20+ pages): 15-45 minutes
Background Processing
All processing happens automatically in the background. You can upload multiple files and check their status anytime from the Jobs page.
Accessing Results
Navigate to the "Results" page to view processed documents:
Results List
- Job ID: Unique identifier for each processing job
- Original Filename: Name of uploaded file
- Status: Processing status (pending, processing, completed)
- Created Date: When the job was submitted
- Actions: View details, download data
Result Details
Click "View" to see extracted data:
- Schools: List of educational institutions found
- Modalities: Teaching programs and student counts
- Distribution Data: Weekly food distribution amounts
- Supplier Info: Provider and CNPJ information
- Metadata: Additional document information
Exporting Data
From the results page, you can:
- View JSON: Raw extracted data in JSON format
- Download Results: Save processed data as file
- Generate Receipts: Create Excel receipts from results
Data Quality
The AI processing includes confidence scores and validation to ensure data accuracy. Review results before using in production.
Receipt Overview
TransferLog PHP automatically generates professional Excel receipts for each school found in your documents.
Receipt Features
- Professional Format: Pre-designed Excel template
- Per School: Individual receipt for each school
- Complete Data: All distribution information included
- Portuguese Formatting: Localized dates and formatting
Receipt Contents
- School Information: Name, address, regional
- Distribution Details: Products, quantities, modalities
- Supplier Data: Provider name and CNPJ
- Weekly Breakdown: Distribution per week
- Official Formatting: Ready for official use
Finding Receipts
Use the Receipts page to:
- Search by School: Find receipts for specific schools
- Filter by Job: View receipts from specific processing jobs
- Sort by Date: Order by creation date
- Download Individual: Download specific receipts
Automatic Generation
Receipts are generated automatically:
- After Processing: When a job completes successfully
- Background Process: Runs every 5 minutes
- Smart Detection: Only generates for new completed jobs
- Duplicate Prevention: Won't regenerate existing receipts
Receipt Storage
Generated receipts are stored in the receipts_generated/ directory and are permanently available for download.
Upload Issues
| Problem |
Solution |
| "File too large" error |
Check PHP upload limits in php.ini (max 50MB) |
| "Invalid file type" error |
Only PDF and Excel files (.pdf, .xlsx, .xls) are supported |
| Upload hangs or fails |
Check server timeout settings and network connection |
Processing Issues
| Problem |
Solution |
| Job stuck in "processing" |
Check background workers are running (cron jobs) |
| OpenAI API errors |
Verify API key is valid and has sufficient credits |
| Processing takes too long |
Large documents may take 30+ minutes to process |
| No results generated |
Check document content is readable and contains educational data |
Database Issues
| Problem |
Solution |
| Database connection failed |
Check credentials in config/database.php |
| Migration errors |
Run php migrate.php status to check migration state |
| Permission denied |
Ensure web server can write to required directories |
Receipt Issues
| Problem |
Solution |
| No receipts generated |
Ensure job completed successfully and receipt worker is running |
| Receipt download fails |
Check file permissions on receipts_generated/ directory |
| Receipt has wrong data |
Review source document and AI extraction results |
Getting Help
If you encounter issues not covered here:
- Check the
logs/ directory for error messages
- Review the application logs for detailed error information
- Contact system administrator with specific error messages
System Architecture
TransferLog PHP uses a modern PHP application architecture:
Backend Components
- PHP 8.1+: Core application logic
- MySQL 5.7+: Data persistence
- OpenAI API: AI processing engine
- PhpSpreadsheet: Excel file handling
- Monolog: Logging system
Processing Workers
- worker.php: File processing and chunking
- chunk_worker.php: AI analysis of text chunks
- merger.php: Result aggregation
- generate_receipts_new.php: Receipt creation
Database Schema
The application uses 9 core tables:
| Table |
Purpose |
users |
User authentication and sessions |
files |
Uploaded document metadata |
jobs |
Processing job tracking |
chunks |
Document text chunks for AI processing |
chunk_results |
AI processing results per chunk |
results |
Final merged processing results |
migrations |
Database schema change tracking |
system_config |
Application configuration settings |
AI Processing Details
The system uses OpenAI GPT models for intelligent data extraction:
- Model: Configurable (GPT-4, GPT-3.5-turbo, etc.)
- Chunking: Documents split into ~5000 character chunks
- Processing: Batches of 4 chunks processed simultaneously
- Retry Logic: Exponential backoff for API failures
- Cost Optimization: Efficient token usage and batch processing
Security Features
- Input Validation: File type and content validation
- Session Security: Secure PHP sessions with timeout
- Directory Protection: Sensitive files blocked from web access
- SQL Injection Prevention: Prepared statements throughout
- XSS Protection: HTML escaping and content validation
Background Processing
The application uses cron jobs for automated processing:
# Recommended cron configuration
* * * * * /usr/bin/php /path/to/auto_run_workers.php # Every minute
*/5 * * * * /usr/bin/php /path/to/generate_receipts_new.php # Every 5 minutes
This ensures continuous processing without manual intervention.
Sistema de Processamento de Documentos com IA
O TransferLog PHP é uma aplicação inteligente de processamento de documentos que utiliza inteligência artificial para extrair automaticamente dados estruturados de documentos educacionais (PDFs e arquivos Excel) e gerar recibos profissionais.
Principais Funcionalidades
Processamento com IA
Integração com OpenAI GPT para extração inteligente de dados
Suporte Multi-Formato
Processa documentos PDF e Excel perfeitamente
Processamento Automatizado
Processamento em segundo plano com atualizações de status em tempo real
Pipeline de Processamento
1. Upload de Documentos
Upload seguro de arquivos com validação
2. Extração de Texto
Extrai conteúdo de texto de PDFs/Excel
3. Análise com IA
OpenAI GPT processa pedaços para dados estruturados
4. Fusão de Dados
Combina resultados em conjunto de dados final
5. Geração de Recibos
Cria recibos profissionais em Excel
Requisitos do Sistema
- PHP: 8.1 ou superior
- Banco de dados: MySQL 5.7+
- Armazenamento: 500MB+ de espaço livre
- API OpenAI: Chave de API válida obrigatória
Instalação Automatizada
A maneira mais fácil de instalar o TransferLog PHP é usando o instalador automatizado:
# Baixe e extraia a aplicação
cd /caminho/para/raiz/web/
unzip transferlog-php.zip
# Execute o instalador automatizado
php install.php
O instalador irá:
- Criar o banco de dados e tabelas
- Executar todas as migrações
- Criar diretórios necessários
- Configurar usuário admin padrão
- Validar requisitos do sistema
Instalação Manual
Se preferir configuração manual:
Passo 1: Configuração do Banco de Dados
# Criar banco de dados
mysql -u root -p
CREATE DATABASE transferlog_db;
GRANT ALL PRIVILEGES ON transferlog_db.* TO 'transferlog_user'@'localhost' IDENTIFIED BY 'sua_senha';
FLUSH PRIVILEGES;
EXIT;
# Importar esquema
mysql -u transferlog_user -p transferlog_db < database/database.sql
Passo 2: Configuração
Edite config/database.php com suas credenciais do banco:
return [
'host' => 'localhost',
'dbname' => 'transferlog_db',
'username' => 'transferlog_user',
'password' => 'sua_senha'
];
Passo 3: Configuração OpenAI
Adicione sua chave da API OpenAI em config/config.php:
'openai' => [
'api_key' => 'sua-chave-openai-aqui'
]
Passo 4: Permissões
chmod 755 uploads/ receipts_generated/ logs/ temp/
Passo 5: Executar Migrações
php migrate.php run
Instalação Concluída!
Acesse sua aplicação em: https://seudominio.com/transferlog-php/
Fazendo Login
Acesse a página de login da aplicação e use suas credenciais:
Conta Admin Padrão:
- Usuário: admin
- Senha: admin123
Altere a senha padrão após o primeiro login!
Navegação
Após o login, você verá o painel principal com:
- Upload: Enviar novos documentos
- Jobs: Monitorar status de processamento
- Resultados: Visualizar dados extraídos
- Recibos: Baixar recibos gerados
Tipos de Arquivo Suportados
Arquivos PDF
- Documentos digitalizados
- PDFs baseados em texto
- Até 50MB por arquivo
- Suporte a OCR para conteúdo digitalizado
Arquivos Excel (.xlsx, .xls)
- Planilhas estruturadas
- Tabelas de dados educacionais
- Até 50MB por arquivo
- Suporte a múltiplas planilhas
Processo de Upload
1. Navegar para Página de Upload
Clique em "Upload" na navegação principal ou vá para /upload
2. Selecionar Arquivo
Escolha seu arquivo PDF ou Excel usando o seletor de arquivos
3. Adicionar Descrição (Opcional)
Forneça uma descrição para ajudar a identificar o documento
4. Clicar em Upload
O sistema irá validar e enfileirar seu arquivo para processamento
5. Monitorar Progresso
Verifique a página Jobs para ver o status de processamento
Diretrizes de Upload
- Tamanho do Arquivo: Máximo 50MB por arquivo
- Conteúdo: Documentos educacionais com dados de escolas/distribuição
- Formato: Documentos claros e legíveis funcionam melhor
- Idioma: Conteúdo em português otimizado
O TransferLog PHP utiliza um sofisticado pipeline de processamento em múltiplas etapas:
Etapa 1: Extração de Texto
Extrai texto legível de arquivos PDF/Excel
Etapa 2: Divisão em Pedaços
Divide texto em pedaços gerenciáveis para processamento de IA
Etapa 3: Análise com IA
OpenAI GPT extrai dados educacionais estruturados
Etapa 4: Fusão de Resultados
Combina todos os resultados de pedaços em conjunto de dados final
Etapa 5: Geração de Recibos
Cria recibos profissionais em Excel automaticamente
Tempo de Processamento
Tempos típicos de processamento:
- Documento pequeno (1-2 páginas): 2-5 minutos
- Documento médio (5-10 páginas): 5-15 minutos
- Documento grande (20+ páginas): 15-45 minutos
Processamento em Segundo Plano
Todo processamento acontece automaticamente em segundo plano. Você pode enviar múltiplos arquivos e verificar seu status a qualquer momento na página Jobs.
Acessando Resultados
Navegue para a página "Resultados" para visualizar documentos processados:
Lista de Resultados
- ID do Job: Identificador único para cada job de processamento
- Nome Original: Nome do arquivo enviado
- Status: Status de processamento (pendente, processando, concluído)
- Data de Criação: Quando o job foi enviado
- Ações: Ver detalhes, baixar dados
Detalhes do Resultado
Clique em "Ver" para ver dados extraídos:
- Escolas: Lista de instituições educacionais encontradas
- Modalidades: Programas de ensino e contagem de alunos
- Dados de Distribuição: Quantidades semanais de distribuição de alimentos
- Informações do Fornecedor: Nome do fornecedor e CNPJ
- Metadados: Informações adicionais do documento
Exportando Dados
Na página de resultados, você pode:
- Ver JSON: Dados extraídos brutos em formato JSON
- Baixar Resultados: Salvar dados processados como arquivo
- Gerar Recibos: Criar recibos em Excel a partir dos resultados
Qualidade dos Dados
O processamento com IA inclui pontuações de confiança e validação para garantir precisão dos dados. Revise os resultados antes de usar em produção.
Visão Geral dos Recibos
O TransferLog PHP gera automaticamente recibos profissionais em Excel para cada escola encontrada em seus documentos.
Funcionalidades dos Recibos
- Formato Profissional: Template Excel pré-projetado
- Por Escola: Recibo individual para cada escola
- Dados Completos: Todas as informações de distribuição incluídas
- Formatação em Português: Datas e formatação localizadas
Conteúdo dos Recibos
- Informações da Escola: Nome, endereço, regional
- Detalhes da Distribuição: Produtos, quantidades, modalidades
- Dados do Fornecedor: Nome do fornecedor e CNPJ
- Detalhamento Semanal: Distribuição por semana
- Formatação Oficial: Pronto para uso oficial
Encontrando Recibos
Use a página Recibos para:
- Buscar por Escola: Encontrar recibos para escolas específicas
- Filtrar por Job: Visualizar recibos de jobs específicos
- Ordenar por Data: Ordenar por data de criação
- Baixar Individualmente: Baixar recibos específicos
Geração Automática
Os recibos são gerados automaticamente:
- Após Processamento: Quando um job é concluído com sucesso
- Processo em Segundo Plano: Executa a cada 5 minutos
- Detecção Inteligente: Gera apenas para jobs concluídos novos
- Prevenção de Duplicatas: Não regenera recibos existentes
Armazenamento de Recibos
Os recibos gerados são armazenados no diretório receipts_generated/ e ficam permanentemente disponíveis para download.
Problemas de Upload
| Problema |
Solução |
| Erro "Arquivo muito grande" |
Verifique limites de upload do PHP em php.ini (máx 50MB) |
| Erro "Tipo de arquivo inválido" |
Apenas arquivos PDF e Excel (.pdf, .xlsx, .xls) são suportados |
| Upload trava ou falha |
Verifique configurações de timeout do servidor e conexão de rede |
Problemas de Processamento
| Problema |
Solução |
| Job parado em "processando" |
Verifique se workers em segundo plano estão rodando (cron jobs) |
| Erros da API OpenAI |
Verifique se chave da API é válida e tem créditos suficientes |
| Processamento demora muito |
Documentos grandes podem levar 30+ minutos para processar |
| Nenhum resultado gerado |
Verifique se conteúdo do documento é legível e contém dados educacionais |
Problemas de Banco de Dados
| Problema |
Solução |
| Falha na conexão com banco |
Verifique credenciais em config/database.php |
| Erros de migração |
Execute php migrate.php status para verificar estado das migrações |
| Permissão negada |
Certifique-se de que servidor web pode escrever nos diretórios necessários |
Problemas com Recibos
| Problema |
Solução |
| Nenhum recibo gerado |
Certifique-se de que job foi concluído com sucesso e worker de recibos está rodando |
| Download de recibo falha |
Verifique permissões no diretório receipts_generated/ |
| Recibo tem dados errados |
Revise documento fonte e resultados de extração da IA |
Obtendo Ajuda
Se você encontrar problemas não cobertos aqui:
- Verifique o diretório
logs/ para mensagens de erro
- Revise logs da aplicação para informações detalhadas de erro
- Contate administrador do sistema com mensagens específicas de erro
Arquitetura do Sistema
O TransferLog PHP utiliza uma arquitetura moderna de aplicação PHP:
Componentes Backend
- PHP 8.1+: Lógica core da aplicação
- MySQL 5.7+: Persistência de dados
- API OpenAI: Engine de processamento de IA
- PhpSpreadsheet: Manipulação de arquivos Excel
- Monolog: Sistema de logging
Workers de Processamento
- worker.php: Processamento de arquivos e chunking
- chunk_worker.php: Análise de IA de pedaços de texto
- merger.php: Agregação de resultados
- generate_receipts_new.php: Criação de recibos
Esquema do Banco de Dados
A aplicação utiliza 9 tabelas core:
| Tabela |
Propósito |
users |
Autenticação de usuários e sessões |
files |
Metadados de documentos enviados |
jobs |
Rastreamento de jobs de processamento |
chunks |
Pedaços de texto de documentos para processamento de IA |
chunk_results |
Resultados de processamento de IA por pedaço |
results |
Resultados finais de processamento mesclado |
migrations |
Rastreamento de mudanças no esquema do banco |
system_config |
Configurações da aplicação |
Detalhes do Processamento com IA
O sistema utiliza modelos OpenAI GPT para extração inteligente de dados:
- Modelo: Configurável (GPT-4, GPT-3.5-turbo, etc.)
- Chunking: Documentos divididos em pedaços de ~5000 caracteres
- Processamento: Lotes de 4 pedaços processados simultaneamente
- Lógica de Retry: Backoff exponencial para falhas de API
- Otimização de Custos: Uso eficiente de tokens e processamento em lote
Funcionalidades de Segurança
- Validação de Input: Validação de tipo e conteúdo de arquivo
- Segurança de Sessão: Sessões PHP seguras com timeout
- Proteção de Diretório: Arquivos sensíveis bloqueados do acesso web
- Prevenção SQL Injection: Prepared statements em todo o código
- Proteção XSS: HTML escaping e validação de conteúdo
Processamento em Segundo Plano
A aplicação utiliza cron jobs para processamento automatizado:
# Configuração recomendada de cron
* * * * * /usr/bin/php /caminho/para/auto_run_workers.php # A cada minuto
*/5 * * * * /usr/bin/php /caminho/para/generate_receipts_new.php # A cada 5 minutos
Isto garante processamento contínuo sem intervenção manual.