This project is a web application built with Flask that allows users to upload PDF invoices. The application extracts key information from the invoices such as invoice number, total amount, due date, and bank details. It then generates a UPN QR code based on the extracted data. The app also integrates with OpenAI’s GPT-4 model to structure and validate the extracted data using a predefined schema.
- Upload PDF invoices and extract important information such as:
- Invoice number
- Invoice date
- Due date
- Total amount
- Bank account (IBAN)
- Issuer details
- Reference number
- Generate a UPN QR code based on the extracted invoice data.
- Secure form submissions with Botpoison integration to detect and block bots.
- Asynchronous HTTP requests using
httpx
. - Data validation and structuring using Pydantic models.
- Python: Flask for the web framework and OpenAI API integration.
- OpenAI GPT-4: Used for structured data extraction from invoice content.
- Pydantic: For data validation and structuring.
- pdfplumber: To parse PDF files and extract text from invoices.
- qrcode: To generate the UPN QR code.
- httpx: For making HTTP requests.
Follow the steps below to set up and run the project locally.
- Python 3.10 or higher
- OpenAI API Key
- Botpoison API Key (for bot protection)
-
Clone the repository:
git clone https://github.com/andrazk/invoices.git
-
Set up a virtual environment:
It's recommended to use a virtual environment to manage your dependencies.
On macOS/Linux:
python3 -m venv venv source venv/bin/activate
On Windows:
python -m venv venv venv\Scripts\activate
-
Install the dependencies:
After activating the virtual environment, install the required Python packages:
pip install -r requirements.txt
-
Set up environment variables:
Create a
.env
file in the project directory and add your API keys:BOTPOISON_SECRET_KEY=your_botpoison_secret_key OPENAI_API_KEY=your_openai_api_key
Make sure to replace
your_botpoison_secret_key
andyour_openai_api_key
with your actual keys.
-
Start the Flask development server:
flask run
The application will now be accessible at
http://127.0.0.1:5000/
. -
Upload an Invoice:
- Visit the homepage of the application.
- Upload a PDF file containing the invoice.
- The application will extract key information and generate a UPN QR code based on the extracted data.
To test that the application is working correctly:
- Upload a sample invoice in PDF format.
- Verify that the extracted data is correctly displayed.
- Check if the generated QR code is accurate.
You can write and run tests to ensure the application works as expected. If there are any test cases provided, you can run them using:
pytest
After setting up the vercel.json file and adding the environment variables, you can deploy your app by running:
vercel
This will deploy the app and provide you with a URL where you can access it.
This project is licensed under the MIT License.