Copy a table out of a PDF
Local PDF table extractor
Pick a table in a text-based PDF, set the column boundaries and download the raw rows as CSV without uploading the file. No OCR. Runs in your browser.
This tool processes your file and entries in this browser tab, without uploading or saving them.
Up to 5 MB and 20 pages. Text-layer PDFs only, no OCR. The fictional example excludes its opening and closing summary.
Privacy and clearing your input
This tool does not send your file contents to a server or save them in browser storage. Use Clear or reload to clear the active input. Navigating away and Back may restore uncleared contents. Download and print actions, where offered, create copies only when you choose them. Your browser manages temporary memory and any separate print window. The PDF converter has its own upload workflow.
File read: choose a PDF.
Table selection: not checked.
Export: no confirmed regions. Statement arithmetic not checked.
Drag the numbered boundary handles or use the numeric controls below. All positions are page points from the top-left. The canvas remains the PDF's original colors.
Copy a table from a text-based PDF without uploading it. Choose the page, draw the table and place the column boundaries, then review and download the raw text. No OCR, automatic transaction recognition or balance reconciliation.
By AnyStatement
Published , 5 min read
Tell the tool which text belongs in your table
Open a PDF and choose one page. Draw a rectangle around the table, or enter its top, bottom, left and right positions. Move the numbered column boundaries into the gaps between columns. The boundary count includes the two outside edges: four boundaries make three columns. You can set two to 12 boundaries, making one to 11 columns.
Every handle has arrow-key controls and a numeric field, so dragging is optional. Arrow keys move a handle by one page point; Shift + arrow moves it by ten. On a phone, the numeric fields are usually easier for narrow columns. Optional header and footer bands exclude text at the top or bottom of your rectangle.
Review the raw rows and the full item list below the PDF. An item must fit wholly inside a single column. Text crossing a boundary is unresolved, not divided by estimated character widths. Move the boundary or choose a different source; unresolved items block that region's export.
Confirm each region only after comparing its text with the rendered page. You can add another non-overlapping region on the same page or inspect another page. Copying the last saved boundaries never copies its approval. Different page dimensions, rotation or unsupported text direction disable that copy; changed layouts still need your visual review.
A geometric row is not necessarily a transaction
The tool groups text baselines using the tolerance you choose, initially two page points. Each group is anchored to its first baseline, rather than letting a chain of small differences pull several lines together. Items are ordered left to right. A gap greater than half a page point inserts one space unless a space is already present; smaller gaps concatenate the item strings. Existing whitespace remains in the raw text.
That rule can leave spaces inside a sign or decimal amount when the PDF draws its pieces separately. It does not decide what the number means. A wrapped description remains another row unless you explicitly select Join to preceding row. Joined nonempty cells are separated by a newline, and the CSV and JSON retain all original geometric row references. A line without a date never inherits the preceding date.
The output is a raw table, not a normalized bank-import file. Dates, amount signs, decimal separators, account identity and whether a row is a transaction remain your review decisions. Page, region and row references describe your manual selection; they are not automatic transaction-to-source verification.
Four transaction lines, not the balance summary
Load example opens an original fictional PDF made with ReportLab, independently of this extractor. Its selected rows read 2026-06-01 / Client / +1,250.00; 2026-06-02 / Supplies / -42.50; 2026-06-03 / Rent / -157.35; and 2026-06-04 / Refund / +19.99. The separate Opening 1,000.00 and Closing 2,070.14 lines sit outside the rectangle.
The expected raw output has four rows and three text columns. This tool deliberately does not sum them or label the statement balanced. It does not infer an opening balance, carry a date down a column, or treat a summary line as a transaction.
When a clean-looking preview is not enough
Only text-layer PDFs are supported. A page with no usable text gets a no-text message, not an empty transaction result. A scan with a selectable footer can still have no transaction text. The tool cannot tell whether hidden OCR text accurately matches the visible image, whether a font's character mapping is correct, or whether the document is authentic.
Rotated pages, rotated or skewed text, non-left-to-right text, control characters, replacement characters and detected overlapping text stop assignment or remain unresolved. Twice-drawn text is retained for review, not silently deduplicated. Ligatures and other characters returned by the PDF reader remain unchanged. A plausible-looking wrong character mapping can escape detection, so compare the text with the page before exporting.
The limits are one PDF of 5,000,000 bytes, at most 20 pages, 20,000 text items and 500,000 text characters on the selected page, and 4,000,000 rendered canvas pixels. The export packet allows 20 regions, 100,000 retained items and 10,000 output rows. Only the selected page is rendered and read at a time. Passwords are entered locally; unsupported encryption or corruption has no server fallback. Clear cancels work and releases the active reader.
There is no OCR, automatic bank recognition, multi-statement batch extraction, hidden-data redaction, malware assessment, authenticity check, reconciliation, Excel workbook output or destination-app acceptance guarantee. No statement-completeness badge is earned by selecting all visible rows.
Download the table and its review trail
Your file and the values you enter are processed in this browser tab. They are not uploaded or sent to analytics. We do not save them between visits. Downloads you choose to save remain on your device.
The page and PDF reader can request same-origin application code, worker and font assets. Those requests do not contain your PDF or extracted text. Clear removes the active inputs and selections; it is not a secure memory wipe, and Back navigation can restore uncleared state. No file or text is handed to another tool or the upload converter automatically.
The CSV carries PDF page, region and geometric row references. The settings/report JSON includes the selected boundaries, excluded bands, manual joins and raw included, excluded and unresolved text items for saved regions. It contains private text outside the selected table too, because exclusions are part of the review trail. Neither download embeds the source PDF or creates a persistent results link.
The default CSV adds an apostrophe to formula-like text, with every changed cell listed. Amount-looking cells are still raw text, so leading plus or minus signs can receive that protection too. A separately warned faithful CSV retains the original cell strings for trusted text-processing workflows. Do not open that faithful copy directly in spreadsheet software. Neither export changes the original PDF.
A native export may save you the whole exercise
Ask the bank for CSV or another native data export first. If you already have Excel with its PDF connector, Power Query can preview detected tables; Microsoft's connector page is dated June 29, 2026 and notes that capabilities differ by host. Tabula offers free manual table selection for text PDFs as installed software. BentoPDF advertises free browser-local automatic table detection. None is an accuracy benchmark for this tool.
These source pages and PDF.js's API documentation were opened on October 18, 2026. Tabula's displayed release is June 4, 2018; BentoPDF and the PDF.js API page showed no update date. The fixture was generated independently and the geometry is covered by pure-logic tests. We did not test those alternative products or a live accounting import.
If manual boundaries are the wrong job
Native bank data remains the first choice. For PDF-only history that needs automatic statement parsing rather than manual text copying, AnyStatement offers a separate upload workflow with source-line review and statement arithmetic checks. Nothing from this local tool is sent there automatically, and downloading your local result remains free. 3 pages a day without an account or card. The free allowance is shared per network and resets at midnight UTC. Conversion is a separate upload; this tool does not send its contents there.