Back to projects

InnoParse

A FastAPI document extraction system using PaddleOCR and local LLMs, built during a 501-hour Innodata OJT.

0stars0forksPythonLive from GitHub
InnoParse

Overview

InnoParse is the core engineering work from my Business Process Automation internship at Innodata. The HR department was processing a steady stream of forms, scans, and spreadsheet exports that all needed to be extracted, validated, and routed into the right places. Most of that work was being done by hand. I wanted to build something that could run on the same hardware they already had, without sending documents to any external API, and still hold up to the kind of throughput a real team needs.

The constraint was the lesson

The brief came with hard limits. No GPU. Sixteen gigabytes of RAM. No outbound calls to OpenAI, Gemini, or any hosted model. Everything had to run locally on a typical office workstation. Those constraints sound restrictive on paper but turned out to shape the project in good ways. They forced me to choose CPU-friendly OCR, write careful chunking logic, and lean on smaller local models for structured extraction instead of reaching for a 70B-parameter model that would have been wrong for the use case anyway.

How it works

The system is a FastAPI service that exposes a small set of extraction endpoints. PaddleOCR handles text recognition because it runs well on CPU and reads Filipino-mixed forms reliably. A local LLM tier handles structured field extraction, with prompts shaped specifically for the document types HR was working with. The output flows into Power Automate workflows and Google Apps Script integrations that already existed, so the team's day-to-day didn't need to change. They just stopped doing the manual transcription part.

What I learned

The most useful thing I took from this project was that automation only works when it slots into an existing process instead of replacing it. The technical work was real, but the design choices that mattered most were boring ones - matching the same field names HR was already using, keeping outputs in the spreadsheet shape the team trusted, and writing logs that an analyst could read without me being there. Building software for a real workflow is different from building software for a portfolio, and InnoParse was a good place to learn that difference.