I built a fully local document-processing pipeline that accepts a PDF and returns structured JSON. The project combines OCR and a retrieval-augmented generation (RAG) pipeline with a Flutter client, connecting document upload, parsing and review in one end-to-end flow.
Why local processing
The defining constraint was that document processing should not depend on an external AI API. Ollama provides local model inference, and Tesseract handles OCR. In this project’s local setup, documents stay on the device rather than being sent to an external inference service.
PDF to structured data
The pipeline ingests PDF documents and combines OCR with local AI processing to return parsed JSON. The structured result is intended for review through the client rather than leaving users with only an unstructured block of extracted text.
Connecting the pipeline to Flutter
I exposed the Python pipeline through FastAPI and connected it to a Flutter client using REST APIs. The client supports the full workflow described in the project: uploading a document, requesting processing, and reviewing the resulting structured output.
My contribution
This is a personal project built in 2026. I developed the local OCR and RAG pipeline, exposed its backend interface, and connected it to the mobile client. It extends my production mobile and Gemini integration experience into local inference and document processing.
Project boundaries
This is a portfolio overview of the implemented workflow. No public store release, accuracy benchmark or production deployment is claimed. Results from AI-based extraction should be reviewed before they are used in consequential workflows.