|
--- |
|
license: mit |
|
title: Data Extractor Using Gemini |
|
sdk: docker |
|
emoji: π |
|
colorFrom: yellow |
|
colorTo: blue |
|
--- |
|
# π Financial Data Extractor Using Gemini |
|
|
|
A powerful AI-driven financial document analysis system that automatically extracts, organizes, and generates professional Excel reports from financial documents using Google's Gemini AI models. |
|
|
|
## π Features |
|
|
|
### Core Functionality |
|
|
|
- **π Multi-format Document Support**: PDF, DOCX, TXT, and image files |
|
- **π Intelligent Data Extraction**: AI-powered extraction of financial data points |
|
- **π Smart Data Organization**: Automatic categorization into 12+ financial categories |
|
- **π» Excel Report Generation**: Professional multi-worksheet Excel reports with charts |
|
- **π― Real-time Processing**: Live streaming interface with progress tracking |
|
|
|
### Advanced Capabilities |
|
|
|
- **π€ Multi-Agent Workflow**: Specialized AI agents for extraction, arrangement, and code generation |
|
- **πΎ Session Management**: Persistent storage with SQLite caching |
|
- **π Auto-shutdown**: Intelligent resource management for cloud deployments |
|
- **π± Modern UI**: Beautiful Gradio-based web interface |
|
- **π Cross-platform**: Works on Windows, Mac, and Linux |
|
- **π³ Docker Support**: Containerized deployment ready |
|
|
|
## ποΈ Architecture |
|
|
|
The system uses a sophisticated multi-agent workflow powered by the Agno framework: |
|
|
|
``` |
|
π Document Upload |
|
β |
|
π Data Extractor Agent |
|
β (Structured Financial Data) |
|
π Data Arranger Agent |
|
β (Organized Categories) |
|
π» Code Generator Agent |
|
β (Python Excel Code) |
|
π Excel Report Output |
|
``` |
|
|
|
### Agent Specialization |
|
|
|
- **Data Extractor**: Extracts financial data points with confidence scoring |
|
- **Data Arranger**: Organizes data into 12+ professional categories |
|
- **Code Generator**: Creates Python code for Excel report generation |
|
|
|
## π Requirements |
|
|
|
### System Requirements |
|
|
|
- Python 3.8+ |
|
- Google API Key (for Gemini models) |
|
- 2GB+ RAM recommended |
|
- Cross-platform compatible |
|
|
|
### Dependencies |
|
|
|
``` |
|
agno>=1.7.4 |
|
gradio |
|
google-generativeai |
|
PyPDF2 |
|
Pillow |
|
python-dotenv |
|
pandas |
|
matplotlib |
|
openpyxl |
|
python-docx |
|
lxml |
|
markdown |
|
requests |
|
seaborn |
|
sqlalchemy |
|
websockets |
|
``` |
|
|
|
## π Quick Start |
|
|
|
### 1. Clone the Repository |
|
|
|
```bash |
|
git clone <repository-url> |
|
cd Data_Extractor_Using_Gemini |
|
``` |
|
|
|
### 2. Install Dependencies |
|
|
|
```bash |
|
pip install -r requirements.txt |
|
``` |
|
|
|
### 3. Configure Environment |
|
|
|
Create a `.env` file: |
|
|
|
```env |
|
GOOGLE_API_KEY=your_gemini_api_key_here |
|
``` |
|
|
|
### 4. Run the Application |
|
|
|
```bash |
|
python app.py |
|
``` |
|
|
|
The application will be available at `http://localhost:7860` |
|
|
|
## π³ Docker Deployment |
|
|
|
### Build and Run |
|
|
|
```bash |
|
docker build -t financial-extractor . |
|
docker run -p 7860:7860 --env-file .env financial-extractor |
|
``` |
|
|
|
### Environment Variables |
|
|
|
- `GOOGLE_API_KEY`: Your Google Gemini API key |
|
- `INACTIVITY_TIMEOUT_MINUTES`: Auto-shutdown timeout (default: 30) |
|
|
|
## π Usage Guide |
|
|
|
### 1. Upload Document |
|
|
|
- Drag and drop or select your financial document |
|
- Supported formats: PDF, DOCX, TXT, PNG, JPG, JPEG |
|
|
|
### 2. Select Processing Mode |
|
|
|
- **Quick Analysis**: Standard extraction and organization |
|
- **Custom Prompts**: Use predefined prompt templates for specific document types |
|
|
|
### 3. Monitor Progress |
|
|
|
- Real-time streaming interface shows each processing step |
|
- Progress indicators for all workflow stages |
|
- Live terminal output for code execution |
|
|
|
### 4. Download Results |
|
|
|
- Professional Excel report with multiple worksheets |
|
- Organized data categories with charts and formatting |
|
- All intermediate files available for download |
|
|
|
## π Output Structure |
|
|
|
The generated Excel reports include: |
|
|
|
### Worksheets |
|
|
|
- **Summary**: Executive overview with key metrics |
|
- **Revenue**: Income and revenue streams |
|
- **Expenses**: Operating and non-operating expenses |
|
- **Assets**: Current and non-current assets |
|
- **Liabilities**: Short-term and long-term liabilities |
|
- **Equity**: Shareholder equity components |
|
- **Cash Flow**: Cash flow statements |
|
- **Ratios**: Financial ratio analysis |
|
- **Charts**: Visual representations of key data |
|
- **Raw Data**: Original extracted data points |
|
|
|
### Features |
|
|
|
- Professional formatting with consistent styling |
|
- Interactive charts and visualizations |
|
- Dynamic period handling (auto-detects years/quarters) |
|
- Cross-referenced data validation |
|
- Print-ready layouts |
|
|
|
## π§ Configuration |
|
|
|
### Model Settings |
|
|
|
Configure AI models in `config/settings.py`: |
|
|
|
- Data Extractor Model |
|
- Data Arranger Model |
|
- Code Generator Model |
|
- Thinking budgets and retry settings |
|
|
|
### Prompt Customization |
|
|
|
Customize agent instructions in `instructions/agents/`: |
|
|
|
- `data_extractor.md`: Data extraction prompts |
|
- `data_arranger.md`: Data organization prompts |
|
- `code_generator.md`: Excel generation prompts |
|
|
|
### Workflow Configuration |
|
|
|
Modify workflow behavior in `workflow/financial_workflow.py`: |
|
|
|
- Agent configurations |
|
- Tool assignments |
|
- Output formats |
|
|
|
## π οΈ Development |
|
|
|
### Project Structure |
|
|
|
``` |
|
βββ app.py # Main Gradio application |
|
βββ workflow/ # Core workflow implementation |
|
βββ instructions/ # Agent instruction templates |
|
βββ prompts/ # Prompt gallery configurations |
|
βββ config/ # Application settings |
|
βββ utils/ # Utility functions |
|
βββ static/ # Static assets |
|
βββ models/ # Data models |
|
βββ terminal_stream.py # Real-time terminal streaming |
|
``` |
|
|
|
### Key Components |
|
|
|
- **WorkflowUI**: Main interface controller |
|
- **FinancialDocumentWorkflow**: Core processing pipeline |
|
- **AutoShutdownManager**: Resource management |
|
- **TerminalLogHandler**: Real-time logging |
|
- **PromptGallery**: Template management |
|
|
|
## π Security & Privacy |
|
|
|
- **Local Processing**: All document processing happens locally |
|
- **No Data Storage**: Documents are processed and cleaned up automatically |
|
- **API Key Security**: Environment-based configuration |
|
- **Session Isolation**: Each session has isolated temporary directories |
|
|
|
## π Deployment Options |
|
|
|
### Local Development |
|
|
|
```bash |
|
python app.py |
|
``` |
|
|
|
### Production (Gunicorn) |
|
|
|
```bash |
|
gunicorn -w 4 -b 0.0.0.0:7860 app:app |
|
``` |
|
|
|
### Cloud Platforms |
|
|
|
- **Hugging Face Spaces**: Ready for deployment |
|
- **Google Cloud Run**: Containerized deployment |
|
- **AWS/Azure**: Standard container deployment |
|
|
|
## π€ Contributing |
|
|
|
1. Fork the repository |
|
2. Create a feature branch |
|
3. Make your changes |
|
4. Add tests if applicable |
|
5. Submit a pull request |
|
|
|
## π License |
|
|
|
This project is licensed under the MIT License - see the LICENSE file for details. |
|
|
|
## π Support |
|
|
|
### Common Issues |
|
|
|
- **API Key Errors**: Ensure your Google API key is valid and has Gemini access |
|
- **Memory Issues**: Increase system RAM or reduce document size |
|
- **Processing Timeouts**: Check network connectivity and API quotas |