The practical field guide

How to extract a scanned table with ChatGPT and check it

Turn a scanned table into checked data, preserve uncertain cells and blanks, reconcile totals and export without losing signs or leading zeros.

WhatsApp
More options
FacebookTelegramEmail
The short answer

Give ChatGPT a readable image or scan of the table, including headings and footnotes. Ask for transcription before calculation, with a marker for unreadable cells and source references. Check the cells and totals against the scan, then export a separate cleaned table.

Three-part visual method for How to extract a scanned table with ChatGPT and check it
Imagem: howusechatgpt.com

What you need before you start

A PDF or image contains a table that cannot be selected as ordinary text.

Bring: Permitted scan or table images, page labels, required columns, number format and rules for blanks, dashes and uncertain characters.

Start with these steps

  1. Confirm the scan is readable and that sharing it is allowed.
  2. Ask for a cell-by-cell transcription with page, row and column references.
  3. Request a list of unreadable characters instead of a guessed value.
  4. Compare high-impact cells and recalculate totals independently.
  5. Save the checked table with the original page reference and unresolved cells.

A prompt you can adapt

Copy, fill in the brackets, then review

Transcribe this table exactly. Keep one row per printed data row, preserve signs, units and original number notation, and include page and source row. Use [blank] for an empty cell and [unclear] for a character you cannot read. Keep printed dashes as dashes. Do not calculate, repair or infer values. List footnotes separately. After I confirm the transcription, create a numeric working table and show the total checks.

Replace every bracket with real information. Remove fields that do not affect your task.

What this looks like in practice

Teaching example: three invoice lines are 24.00, 12.50 and −5.00, with a printed total of 31.50. Dropping the minus sign produces 41.50. The mismatch tells you where to investigate; it does not authorize changing a cell to force the total.

Check whether the table is text or a picture

Try selecting a table entry in the PDF and copying it into a plain text editor. If the pasted characters match the page, that part has a usable text layer. If nothing can be selected, the table may be a picture. If copied text is scrambled, a text layer exists but may be unreliable. This quick check helps you choose the next step.

OCR means turning printed characters in an image into computer-readable text. It can save a lot of typing, but it can also confuse a zero with a letter, lose a minus sign or move a value into the next column. Treat extracted text as a first transcription until you compare it with the visible source.

ChatGPT supports file and image work, but do not assume that every PDF workflow sees every embedded image in the same way. If it cannot read the table clearly, provide a readable image of that table or use an OCR tool first. Keep the original file available for comparison.

Make the source easier to read without losing context

Crop unused margins, but keep the column headings, units, row labels and footnotes. A note saying amounts are in thousands changes the meaning of every value. A cropped minus sign changes a credit into a charge. When the page contains several tables, identify the one you want by its heading and page number.

Use an image where the characters are readable at ordinary viewing size. Straighten a tilted page if needed. A larger version of a blurred character does not restore missing detail. If the source is poor, ask for a better scan before spending time on repeated guesses. Keep a small crop for a troublesome cell and a wider crop that shows its row and column.

Remove unrelated personal details when sharing is not needed for the extraction. If the source belongs to your employer or another person, use the file-sharing rules that apply to it. You often need the table values and dates, not a complete record with names, signatures or account numbers.

Set the transcription rules before requesting numbers

The first job is copying what the page says, not deciding what the page meant. Ask for one record per printed data row. Name the columns and require a page and row reference. Tell ChatGPT how to represent an empty cell, a dash and an unreadable character. Those three cases should not all become zero.

Keep original number notation at first. In one source, 1,250.00 means one thousand two hundred fifty. In another, the same value may appear as 1.250,00. Do not ask for both extraction and format conversion in the same first step when the scan is hard to read. First check the copied text; then make a separate numeric version.

Ask for footnotes and merged headings separately. If a year spans columns for revenue, expense and balance, use full column names such as 2025 revenue. If one row label wraps onto two lines, it is still one data row. A subtotal should be clearly labelled so it does not later get counted as another transaction.

Teaching example: extract an invoice table

This is a teaching example with made-up invoice data. Imagine page two shows three lines: item 001, notebooks, quantity two, unit price 12.00, line amount 24.00; item 002, folders, quantity five, unit price 2.50, line amount 12.50; item 003, credit, blank quantity and unit price, line amount −5.00. A printed total beneath the lines is 31.50.

The first transcription keeps item codes as text and uses [blank] where the page has no quantity or price. It does not replace the credit's blanks with zero. It keeps the credit's minus sign. The printed total is recorded separately from the detail rows so it cannot be added into the sum.

You can check this small table by eye. Two times twelve is twenty-four; five times two and a half is twelve and a half; twenty-four plus twelve and a half minus five is thirty-one and a half. The calculation supports the total, while the source still supports each copied cell.

Teaching example: extract an invoice table
SourceCodeItemQuantityUnit priceLine amount
Page 2, row 1001Notebooks212.0024.00
Page 2, row 2002Folders52.5012.50
Page 2, row 3003Credit[blank][blank]−5.00

Use totals to find problems, not to hide them

If extraction loses the minus sign in the teaching example, the calculated detail sum becomes 41.50. The printed total is 31.50, so the difference is ten. That difference is a clue. Check the credit row, decimal places and any omitted rows. Do not tell ChatGPT to change a value until the total matches.

A wrong subtotal can also cause a mismatch. Suppose a table prints a subtotal after the first two lines. If you add both detail lines and their subtotal, you count the same amount twice. Ask for a row type such as detail, subtotal or grand total before calculating. Use only the rows that belong in the requested sum.

Matching totals are helpful but limited. Two errors can cancel: one value too high and another too low by the same amount. A total check cannot prove all the cells. For a small table that drives a payment or another important decision, compare every cell with the source.

Handle unreadable cells without making a guess look real

If a cell could say 8.50 or 6.50, mark it [unclear] and record both possible readings only in the exception notes. Do not place either guess in the numeric working column. The difference may look small but affect a total, a rate or a later decision. A tidy table with a hidden guess is worse than a table with one visible missing value.

Request a closer crop with the row label and column heading. Ask about that cell alone so the response is easy to compare. If the source still does not settle it, seek a clearer document or confirmation from its owner. A plausible number from neighbouring rows is not evidence.

Keep an exception list with page, row, column, problem and status. You can then continue the safe part of the task without losing track of the unresolved part. Calculations that exclude an unclear amount should say they are partial, list the excluded row and avoid presenting the result as the complete total.

Check page joins, row order and split labels

For a table spread over several pages, label every page and keep repeated headings. Count data rows on each page, then compare the combined count. Check the last row of one page and first row of the next. A row continued at the top of a page can be duplicated or omitted if you combine extracts blindly.

Keep source order unless the next task needs sorting. Order helps you find a cell in the original and may carry meaning, such as a sequence of events. If you sort later, keep a source-row field. Do not rely on spreadsheet row numbers after sorting because they no longer identify the printed row.

Repeated headers are not data. Notes beneath a table are not extra records. A wrapped item name is not a second purchase. Ask ChatGPT to show how it handled these cases. For a large source, process named page ranges and combine them after checking that column names and row rules match.

Create a cleaned copy after the transcription is checked

Keep the raw transcription unchanged. Create a second table for calculation. In that working copy, convert confirmed number strings to numbers using the source's decimal convention. Map the original fields to the cleaned fields so a reviewer can see what changed. Keep identifiers such as 001 as text; they are labels, not amounts.

Decide how a dash should behave based on the source's own meaning. It may mean not applicable, no value reported or something else. Do not convert it to zero just because a spreadsheet calculation prefers numbers. An unknown amount and a real zero answer different questions.

For the teaching example, the numeric line amounts are 24, 12.5 and −5. The credit's quantity stays missing because no quantity was printed. Keep the printed total of 31.50 as a separate check. This gives you a clean calculation without erasing the source's structure.

Export CSV or a spreadsheet without shifting columns

Choose an export format your next tool can import. CSV is plain text with a separator between fields. If a field contains that separator, it needs proper quoting. A description with a comma can split into two columns when exported incorrectly. A source using decimal commas may be easier to import with semicolon separators, depending on your spreadsheet settings.

Ask for the delimiter, decimal convention and identifier types explicitly. After opening the file, inspect the first few rows, an uncertain row and the last row. Confirm that codes keep leading zeros and dates stay in the intended order. Check accented text and quoted descriptions if they appear in the source.

A Markdown table in a chat is not the same as a checked spreadsheet file. If ChatGPT creates a file, open it and inspect the values that were imported. If it gives you text instead, import that text deliberately with the correct separator rather than relying on automatic guesses.

Decide when extraction is finished

The task is complete when the output has the right rows and columns, important cells match the scan, total checks are explained and uncertain cells remain visible. Keep the source, raw transcription, cleaned copy and exception list together. That record lets you correct one value later without repeating the whole job.

For a one-page table, ChatGPT can be a convenient extraction helper. For hundreds of similar pages, a dedicated OCR tool and a repeatable checking script may be faster. Use ChatGPT for the unusual rows, the cleaning rules and the explanation of errors. Repeated manual prompting is a poor way to process a large stable layout.

If you need a complete numeric result and one decisive cell remains unreadable, stop that calculation at the real limit. You can still deliver the checked rows and a precise request for the missing cell. Useful extraction makes uncertainty smaller and easier to resolve; it does not turn a guess into a fact.

Move on to analysis after confirming the extracted values. Analyze the checked table as a CSV →

Check the result before you use it

  • Do extracted row and column counts match the scan?
  • Are negative signs, decimal places and leading zeros preserved?
  • Are blanks and dashes still distinct from zero?
  • Were subtotal rows kept out of detail sums?
  • Does the exported file import with the same columns and values?

Watch for: A matching total does not prove that every cell is correct: two mistakes can cancel each other out. Keep the original scan and inspect the important cells.

Sources and references

WhatsApp
More options
FacebookTelegramEmail