Skip to content

Estimates Data Extractor

Reports in. A clean spreadsheet out.

Upload a research report as a PDF and get its numbers back as a standardised Excel file.

Demo may take about 30 seconds to wake up.

Type
Enterprise tool
Built for
Morningstar, Inc.
Role
Design, parsing logic, backend, interface and deployment
Stack
Python, Flask, pdfplumber, PyMuPDF, Camelot, pandas, openpyxl, Groq, Docker
shivamkole1969-data-extractor.hf.space
Data Extractor upload screen with a drop zone and a report-type selector
Data Extractor upload screen on a phone

The need

Analysts who follow many research reports copy the same kinds of numbers out of PDFs into spreadsheets, by hand, every week. It is slow, it is boring, and one slipped decimal travels into every model built on top of it.

What we built

A drag-and-drop tool with one parser per report layout that returns a standardised Excel file.

shivamkole1969-data-extractor.hf.space
Upload panel with drag and drop and a paste-URL option

Drop a report, pick its layout

Drag a PDF onto the page or paste a link to one. Choose which report layout it is, and start. Progress and elapsed time show while it works.

shivamkole1969-data-extractor.hf.space
Upload panel with drag and drop and a paste-URL option

One parser per layout

Each report layout has its own processor that knows where every table and number sits. The live demo handles 15 layouts, and adding another means adding one file.

shivamkole1969-data-extractor.hf.space
Upload panel with drag and drop and a paste-URL option

Same report, same columns, every time

Values are mapped onto a fixed set of data points, so the spreadsheet always has the same shape and can feed straight into a model or a database.

shivamkole1969-data-extractor.hf.space
Upload panel with drag and drop and a paste-URL option

AI where rules can't reach

A shared base class can call Llama 3.3 70B at low temperature with strict JSON parsing and automatic retry, for layouts too irregular for rules.

shivamkole1969-data-extractor.hf.space
Activity log screen with the reminder to verify extracted data

Honest about its limits

The interface keeps a standing reminder to check output against the source file, because a layout change in a new report can move a number.

Try it

Press extract. Watch it read a messy, hand-corrected invoice, check the arithmetic and flag the one line a person should look at.

Try an extraction

A fictional invoice. The extractor reads it, checks the maths, and flags what a person should look at.

Sahyadri Hardware Stores

Plumbing, sanitary and paints, Kothrud, Pune

Tax invoice No. 0417, Date 12/9/26

ParticularsQtyRateAmt
PVC pipe 1" (6 m)121852220
Elbow ½"40459405
Ball valve 1"62401440
Teflon tape2512300

Total ₹ 5150.7

Extracted rows from the sample invoice
ItemQtyRateAmount
PVC pipe 1" (6 m)
Elbow ½"
Ball valve 1"
Teflon tape
GST 18%
Total
  • Every line: quantity × rate equals amount
  • Subtotal 4,365.00 matches the sum of lines
  • GST 18% recomputed: 785.70
  • Line 2 quantity was corrected by hand (40 to 45). Sent to review.

How it works

  1. Report in

    PDF upload or link

  2. Pick layout

    15 supported

  3. Read tables

    pdfplumber

  4. Map fields

    Fixed data points

  5. Write Excel

    Standard columns

  6. Download

    From Reports

The idea that transfers to your documents

Your documents are not broker reports. They might be supplier invoices, bank statements, lab reports or delivery challans. The method is the same:

  • Learn the layout once. Each document type gets a parser that knows where things are, so the same file always gives the same answer.
  • Map to your columns. The output matches the sheet your team already uses, down to the column names and number formats.
  • Check before you trust. Totals are recomputed, formats validated, and anything uncertain is flagged for a person to review.
  • Use AI only where it earns its place. Irregular layouts go to a language model that must return structured data, and that data is checked like everything else.

Why rules first

A language model can read almost anything, but it can also read the same page two slightly different ways. For numbers that feed a financial model, repeatable beats clever. So fixed layouts get exact parsers, and the model is a fallback with tight constraints, not the default.

Tech specs

Input
PDF reports, uploaded or by link
Output
Standardised Excel workbook
Layouts
15 report layouts in the live demo, one processor each
Parsing
pdfplumber, with PyMuPDF and Camelot available
AI fallback
Llama 3.3 70B on Groq, JSON-only output, retry and key rotation
Jobs
Background processing with progress and timing
Backend
Python and Flask
Hosting
Docker on Hugging Face Spaces
Built for
Morningstar, Inc.
Demo data
Shown here with publicly available documents only

Want something like this for your business?

Tell us what eats your team's week. You'll get a written scope with a fixed price and timeline before any work starts.