A full-stack application that converts bank statements from PDF format into structured profit and loss statements using OCR and AI-powered parsing.
- PDF upload and processing
- OCR text extraction
- Intelligent transaction categorization
- Income and expense tracking
- Beautiful and responsive UI
- Real-time updates using React Query
- React.js with TypeScript
- Tailwind CSS for styling
- React Query for state management
- Axios for API requests
- Node.js with Express
- MongoDB for data storage
- Python for PDF processing
- Tesseract OCR for text extraction
- OpenCV for image preprocessing
- Node.js (v14 or higher)
- Python 3.8 or higher
- MongoDB
- Tesseract OCR
- poppler-utils (for pdf2image)
# Install Homebrew if not already installed
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install dependencies
brew install tesseract
brew install poppler
brew install mongodb-community
# Start MongoDB
brew services start mongodb-community- Clone the repository:
git clone <repository-url>
cd pdf-statement-analyzer- Install frontend dependencies:
cd client
npm install- Install backend dependencies:
cd ../server
npm install- Install Python dependencies:
cd python_backend
pip install -r requirements.txt- Create necessary directories:
mkdir uploads- Set up environment variables:
cp .env.example .env
# Edit .env with your configuration- Start the frontend development server:
cd client
npm run dev- Start the backend server:
cd server
npm startThe application will be available at:
- Frontend: http://localhost:5173
- Backend: http://localhost:3000
- Open the application in your web browser
- Click the upload button or drag and drop a PDF bank statement
- Wait for the processing to complete
- View the analyzed statement with categorized transactions and totals
- Frontend code is in the
clientdirectory - Backend Node.js code is in the
serverdirectory - Python PDF processing code is in the
server/python_backenddirectory
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.