How to convert a PDF to CSV
Open your PDF in the tool above. It reads the text on every page, takes out page numbers and repeated headers, joins cells that wrap onto a second line, and puts every row into one CSV. Read the totals check before you download.
It works on PDFs that have text in them, such as the reports and statements software exports.
What the totals check tells you
A CSV can look perfect and still be missing a row. You won't spot it by scrolling. But the report carries its own answer key: the totals it prints. When the rows add up to the printed total, you have every row, read once, with the right sign.
| Row | Amount |
|---|---|
| 1 | 240.00 |
| 2 | 1,180.00 |
| 3 | 85.00 |
| 4 | (180.00) |
| 5 | 310.00 |
| 6 | 425.00 |
| 7 | 1,250.00 |
| 8 | 85.00 |
| Rows add up to | 3,395.00 |
| The PDF prints | 3,395.00 |
They match. The CSV holds what the report holds. Import it.
They don't match. Something changed between the page and the rows. Look for a row that sat across a page break, a subtotal read as a record, or a credit read as a charge. Turn on the page number column to see where each row came from. If the gap equals one row's amount, that row is missing or in twice.
No total was found. The tool only checks rows whose first cell starts with Total, Subtotal, Grand total, Balance forward or Carried forward. If your report labels it differently, add up the column yourself and compare. Our guide to legacy system data migration covers the other counts you can check a migration against.
What the tool changes on the way to the CSV
A report is laid out for a printer, not a spreadsheet. It repeats its title and column header on every page, numbers the pages and wraps long cells. In a CSV, each of those is a row of junk, and an import takes it as a record.
| Line in the PDF | In the CSV |
|---|---|
| Northwind Field Services: service history, Q3 2026 | Removed |
| Date Ticket Location Service Amount | Row |
| 07/09/2026 T-10452 Main St clinic Replace compressor, recharge 1,180.00 | Row |
| refrigerant | Joined to the row above |
| 07/30/2026 T-10533 Main St clinic Warranty credit, T-10452 (180.00) | Row |
| Page 1 of 2 | Removed |
| Northwind Field Services: service history, Q3 2026 | Removed |
| Date Ticket Location Service Amount | Removed |
| Total 3,395.00 | Checked |
- Repeated headers and page numbers come out. A second copy of the column header is removed, and so are lines like "Page 1 of 2" and short text lines that come back at the top or bottom of two or more pages. Turn this off to keep them.
- Wrapped cells are joined. A line with a few words and no numbers is a cell running onto a second line, so it goes back into its row: usually the one above, or the one below when that row's text picks up where the line stops.
- Credits in parentheses count as minus. Accounting reports show negative numbers in parentheses, like (180.00). The totals check counts them as minus, and "Write numbers plainly" turns them into -180.00 and drops thousands commas and currency signs.
How the converter reads a PDF
A PDF has no rows or columns. It stores text strings at positions on the page, and it doesn't define tables unless the file has optional tags for them. So the tool rebuilds the table from where the text sits:
- Rows are text on the same line. The tool reads each page with Mozilla's PDF.js, which gives every piece of text and its position. Pieces on one line, close together, become one cell.
- Columns are the gaps that run down the page. Where almost no line has text, one column ends and the next begins.
- The header is the first line that fills most columns and has no numbers. Lines above it, like the report title and account details, aren't in the CSV, and the tool tells you how many it left out.
- The CSV follows RFC 4180. A cell with a comma, a double quote or a line break is put in double quotes, and a double quote inside it is doubled.
- Limits. PDFs up to 50 MB. A password-protected PDF needs a copy saved without the password. A page with two tables side by side, or a table whose columns move from page to page, can come out with cells in the wrong columns; the totals check is how you'll know.
Questions
- Can ChatGPT create a CSV file from a PDF?
- Yes. ChatGPT can read an uploaded PDF and build a table from it. A file can be too large or complex for it to read completely, so add up its rows and compare them with the report's totals before you trust the file. This tool runs that check for you, and it reads the same PDF the same way every time.
- Can it convert a scanned PDF?
- Not directly. A scanned PDF is a picture of each page, with no text to read. Run it through OCR first, then convert the result here.
- Why do accented names look garbled when I open the CSV in Excel?
- Excel opens a UTF-8 CSV normally if it was saved with a byte order mark (BOM). This file is UTF-8 and has no BOM. Open it through Excel's text import instead, and pick UTF-8.
When it's 250 pages, not two
If you run onboarding at a software company, a PDF is sometimes all a new customer's old system will give them. By Rubie's own numbers, 95% of the source systems we see have no clean API or export that captures all the data a migration needs.
One report is a job for this tool. Hundreds of pages for every new customer is the job Rubie does: it handles PDFs that size, and moves the customer's history into your product without engineering time. Granum put it plainly: "We've had (customers) who give us those 250 page PDFs, and in the past we couldn't even work with them, but now we have Rubie." See how Migration Playbooks run a migration end to end, or check a CSV before you import it with the CSV viewer.