Extract Table from PDF

Extract a table from each page of a PDF into CSV using OCR. Runs entirely in your browser.

Extract tables from a PDF

Upload a PDF, choose a language, then run OCR on every page to reconstruct its table as CSV.

Drag & drop a PDF file here, or click to browse
Choose a single scanned or image-based PDF that contains a table.

    Extracted tables

    Your PDF is processed locally in this browser tab using pdf.js and Tesseract.js (WebAssembly OCR). It is never uploaded to Calcooo or any server — only the OCR engine and language data are fetched from a CDN.

    Note: table reconstruction is a best-effort heuristic based on word positions, not a true table-structure parser. It works well on simple grid-like tables with clear row and column alignment, and less well on complex tables with merged cells.

    How to use this tool

    1. Drag and drop your PDF file into the box above, or click to browse and select it.
    2. Choose the language that matches the text in your table.
    3. Press Extract tables and wait while each page is rendered and OCR runs.
    4. Check the per-page preview tables, then download the combined result as a CSV file.

    Frequently asked questions

    Is my PDF uploaded anywhere?

    No, it's entirely local. Pages are rendered and read using pdf.js and Tesseract.js, both running in your browser. Your file is never uploaded to Calcooo or any server.

    Does this work on regular (non-scanned) PDFs too?

    Yes — even if the PDF has selectable text, this tool renders each page as an image and re-reads it via OCR for consistent table-position detection, so it works the same way on both scanned and text-based PDFs.

    How accurate is the table structure?

    Same best-effort caveat as Extract Table from Image — it works well on clean, grid-aligned tables, and less reliably on complex or merged-cell layouts.

    What do I get for a multi-page PDF?

    A separate table/CSV section for each page that contains table-like content, combined into one downloadable CSV with a page-break note between sections.