New🔬 Community guide for IBM's open-source DoclingOCR — free document AI for everyone.
⭐ Star on GitHub
DoclingOCRv2026
Financial statements

Financial Statements to Excel Without Losing the Subtotal Structure

A P&L is not a flat table. It has sections, subtotals that must not be summed twice, and two or three year columns that all look alike. Flatten it carelessly and your EBITDA quietly becomes someone else’s guess.

Skip the manual copy-paste

Convert one file free — see the table land in Excel

Free daily conversions · multi-year column layouts supported · CSV and Excel export.

Convert a statement free

Where financial statement extraction fails

Subtotals treated as line items

Gross profit, operating income, and net income are already sums. Add them to the detail lines and every total doubles.

Parentheses lose their sign

(1,450) means negative 1,450. Imported as text, expenses become revenue in your model.

Year columns merge

FY2024 and FY2023 sit 40 points apart with no rule between them, so both years collapse into one column of interleaved numbers.

Unit headers get lost

"$ in thousands" printed once above the table changes every number by 1000×. Miss it and your model is off by three orders of magnitude.

Notes and page furniture

Footnote markers, "(see Note 12)", and page numbers become stray values in the data.

Restated figures

Prior-year columns sometimes contain restated numbers that no longer match the last filing. Nothing in the PDF flags it.

What the conversion must preserve

  • Section headings and indentation, so you can reconstruct the statement’s hierarchy.
  • Subtotal rows marked as such, distinct from detail rows.
  • One column per period, with the period labels kept — never merged into one amount column.
  • Signs and units, so figures are comparable without mental arithmetic.
  • Footnote text kept out of the numeric grid.

Turning three statements into a model

Most analysis starts by pulling P&L, balance sheet, and cash flow into one workbook, each on its own sheet, with the periods aligned. Do that before writing a single formula — misaligned years are the most common modelling error.

Then build a small check row: assets minus liabilities minus equity should equal zero for every period. It is a one-line sanity test that catches most extraction mistakes in the balance sheet.

A note on prior periods

When a company restates, the comparative columns in the new filing replace the old numbers. If you are building a time series, use the most recent filing’s figures for all periods it shows, and only use older filings for years the new one omits.

Keep the source filing in the filename. Analysts who cannot trace a number back to a page will eventually distrust the whole sheet.

Frequently asked questions

Can it handle multi-year column layouts?+

Yes. Columns are detected from the table geometry, so a three-year statement keeps three separate amount columns rather than interleaving values.

Do signs survive accounting parentheses?+

Yes. Values written as (1,450) are kept negative so arithmetic behaves correctly after import.

What about the "$ in thousands" header?+

It is part of the table header and is preserved for you to scale by. Always confirm the unit before using the numbers in a model.

Does it work on scanned annual reports?+

Scanned pages are OCRed first. Dense financial tables at low resolution are the hardest case — check totals and subtotals against the printed page.

Can I get the notes and MD&A too?+

Text sections can be extracted as text, but the numeric grid is what the table pipeline is built for. Treat narrative as reference material, not data.

Keep reading

Done reading? Convert a document and check the output yourself.

Convert a statement free
Open source · Free to use · Community-driven

DoclingOCR — Open-Source Document Intelligence

Don't spend hours fighting with Python dependencies, PyTorch CUDA drivers, or downloading 4GB models. Use SheetParser — the dedicated online Web UI powered by Docling & TableFormer.

No Credit Card Required100% Free Daily CreditsInstant Browser Conversion