Batch convert PDFs to CSV on Mac (2026 workflow)
Turn a folder of PDFs into one consolidated CSV on Mac — one prompt, one pass, one spreadsheet, and your files read on-device; only the text is uploaded.
Turn a whole pile of PDFs into one spreadsheet with ignitai on your Mac — first document free (up to 4 pages), then $29.99/month (USD). ignitai turns a whole batch of PDFs into one clean spreadsheet in a single run on your Mac. Your first document (up to 4 pages) is free; then $29.99/month (USD) for 80 pages a week.
Get ignitai on the App StoreTo batch convert PDFs to CSV on Mac, select the PDFs in Finder and drop them into a converter that applies one extraction instruction to every file and writes a single CSV, one row per record across the whole set. Fix the column list in the instruction so every file produces the same columns, and ask for a field printed in each document (vendor, invoice number, statement period) so every row stays traceable. Check the row count and one total before you import the file anywhere.
On a Mac, ignitai does exactly that. It reads each PDF on the Mac with Apple’s built-in text recognition, and an AI turns the recognized text from every file into one table with the columns your plain-English instruction names. The PDFs stay on your Mac; only the recognized text goes to ignitai’s servers, where the CSV is built.
In this guide11 sections
What “one CSV from many PDFs” actually requires
Converting PDFs one at a time and pasting the results together breaks down quickly, and the reasons are specific to CSV:
- Every file must produce the same columns, in the same order. A CSV has one header row. If invoice 7 comes back with
qtybeforedescriptionand invoice 8 the other way round, the merged file is wrong in a way no importer will flag. - Every row must say where it came from. Forty files merged into 600 rows look identical. When an amount looks wrong next month, you need the vendor and invoice number on the row, not an afternoon of opening PDFs.
- The grain must be decided up front. One row per invoice and one row per line item are different tables. A CSV holds one, so pick before you start.
- Failures must be visible. One password-protected or damaged file in forty should stop you, not vanish from a file that looks complete.
An instruction that names the columns, a printed identifier on every row, and a converter that names failed files solve all four.
Batch convert PDFs to CSV on Mac: the steps
- Add the PDFs. Select the files in Finder (⌘A selects everything in the folder) and drag them onto the ignitai window, or press ⌘O and choose them. Scanned and born-digital PDFs can go in the same batch. Images can’t share a drop with PDFs: a mixed drop imports only the PDFs, so run photos and screenshots as their own batch. Paper you haven’t scanned yet can come in through File ▸ Import from iPhone or iPad, using the iPhone camera.
- Write one instruction for the whole batch. A prompt is required; Convert stays disabled until there is one. Start from the Invoice or Table starter or write your own, using the rules in the next section. Saved instructions are one tap away next time, so a monthly batch reuses it.
- Choose CSV and convert. Before anything runs, ignitai shows how many pages the batch will use and how many you have left; cancelling while it runs charges nothing. Converting needs an internet connection. The Mac shows each file’s status as the batch runs and sends a notification when the spreadsheet is ready.
- Check the table. Amount columns are totaled on screen, and you can select rows to add them up; sort by vendor, select one vendor’s rows, and compare the sum with that vendor’s printed total. Rows are numbered, the original pages are kept on the Mac to compare any row against, and an empty column is flagged.
- Export. Share… is in every finished file’s menu, or drag the finished spreadsheet out of the app into a Finder folder. Cells are edited in your spreadsheet app or script, not in ignitai.
If a file fails, ignitai says why. A password-protected PDF is named, never silently skipped, and the original file is never changed. Unlock it (open it in Preview with the password and export a copy without encryption), then run the batch again. Convert Again restarts a failed or cancelled conversion with its pages kept.
Writing an instruction that holds across forty different layouts
The instruction is the schema of your CSV. These rules make it hold when every PDF looks different:
- Name the columns, in order, in the words your destination uses. “Columns: vendor, invoice_number, invoice_date, description, quantity, unit_price, line_total” produces the same header whichever vendor’s template a file uses. If the CSV is going into a database or an import screen, use its field names exactly.
- Describe fields, never positions. “The invoice date” works on every layout; “the date in the top right” works on one.
- Pick the grain and repeat the document fields. For line items: “One row per line item. Repeat vendor, invoice_number and invoice_date on every row.” For a summary: “One row per invoice.” Need both? Run the batch twice with two instructions. One run always produces one table.
- Pin the formats. “Dates as YYYY-MM-DD. Amounts as plain numbers with no currency symbol or thousands separator; credits negative.” A CSV carries no types, so whatever the file says is what the importer reads.
- Say what to skip. “Skip cover pages, remittance slips, terms and conditions and blank pages.”
- Tell it when to leave a cell blank. “Leave a field blank if the document doesn’t print it.” A blank is easy to find; a guess isn’t.
Filenames never leave your Mac, so there is no source-file column in the output. Traceability comes from what’s printed in the documents: vendor and invoice number for invoices, account last four and statement period for statements, employee and pay date for payroll. If you need a strict file-by-file audit trail, convert the files one at a time.
A worked example: a quarter of vendor invoices
Forty invoices from a dozen vendors, mostly two pages each: about 80 pages.
- Page budget. The subscription includes 80 pages a week, up to 320 a month, and unused weekly pages don’t carry over. This batch uses roughly one week’s allowance. Twice the invoices would need a second week or extra pages, which run from 5 pages for $0.99 to 1,050 pages for $99.99 and never expire. The page count shows before the run, so you know before you start.
- Prove the instruction first. Run one short invoice, and check the columns before spending 80 pages. Your first document, up to 4 pages, converts free.
- Run the batch. One instruction, one-row-per-line-item, the columns above, CSV.
- Check. Sort by vendor in ignitai, select each vendor’s rows, and compare the sum with the vendor’s printed invoice totals. Then compare the number of distinct invoice numbers with the number of files you dropped in: forty files, forty invoice numbers.
Combining runs and splitting for importers
Combining runs. Two batches with the same instruction produce two CSVs with identical headers. In Terminal, this keeps the first header and drops the second:
awk 'FNR==1 && NR!=1 {next} 1' q3.csv q4.csv > second-half.csv
The same line works for any number of files (*.csv). If statement periods overlap between runs, remove duplicate transactions before importing; date, description and amount together usually identify one.
Splitting for importers. Some importers cap a single upload. QuickBooks Online, for example, takes CSV files of 350 KB or less and up to 1,000 transactions per upload (per Intuit’s help page, October 2026). Split a large file by month or by account, and keep the header row on every part.
Do it yourself: a pdfplumber loop
If your PDFs are born-digital (they have a text layer) and share one layout, say monthly statements from one bank, a short Python script is a valid zero-cost route. Recent Homebrew Python refuses system-wide pip install, so put the library in a virtual environment:
python3 -m venv ~/.venvs/pdfcsv
source ~/.venvs/pdfcsv/bin/activate
pip install pdfplumber
Then a loop that writes every table row from every PDF in a folder into one CSV, with the file name and page number in the first two columns:
import csv
import sys
from pathlib import Path
import pdfplumber
with open("all.csv", "w", newline="", encoding="utf-8") as out:
writer = csv.writer(out)
for path in sorted(Path(sys.argv[1]).glob("*.pdf")):
try:
with pdfplumber.open(path) as pdf:
for page_no, page in enumerate(pdf.pages, start=1):
for table in page.extract_tables():
for row in table:
writer.writerow([path.name, page_no, *row])
except Exception as err: # encrypted or damaged file
print(f"FAILED {path.name}: {err}", file=sys.stderr)
Run it with python3 batch.py ~/Desktop/statements. An Automator Folder Action can run the same script whenever a PDF lands in a watched folder.
Know where it stops. extract_tables() finds tables from ruling lines and spacing, so a different layout gives a different column shape, and the header rows of every table land in the output for you to filter out. Wrapped descriptions split across rows. Scans have no text layer, so the loop returns nothing for them without an OCR step added in front. For one stable layout, a script is a one-time cost. For forty vendors, you’ll spend the time on edge cases instead.
Web converters for batches
Web converters such as iLovePDF and Smallpdf accept several files at once (how many depends on the plan). Their table tools mostly convert to Excel rather than CSV, and generally return one spreadsheet per PDF, which leaves both the merge and the CSV export to you. They also receive every file whole. ignitai receives the text recognized on your Mac, not the files, and keeps the finished spreadsheet in your ignitai account until you delete it. For public documents, either works; for a batch with one consistent schema, the per-file output is the real cost.
When a batch isn’t the right tool
- Your source already exports CSV. Banks, card issuers and most accounting and payroll systems can export recent data as CSV directly. Use it when it covers the period; the PDF route is for older periods, closed accounts and documents from other people’s systems.
- Two grains at once. A summary and line items are two tables. Run two batches rather than forcing one CSV to hold both.
- Very long single documents. A several-hundred-page report can use more than a week’s pages on its own. Convert only the pages you need, or plan on extra pages.
- Mixed languages. Say in the instruction whether descriptions stay in their original language or are translated, so the whole batch is consistent.
On iPhone, iPad and in Excel
If the destination is a person rather than an import, the batch PDF-to-Excel guide for Mac is the same flow with Excel output, where amounts arrive as real numbers ready to total. For one file at a time, see the Mac PDF-to-CSV guide. Documents that arrive on the phone can be converted there: the bank statement to CSV guide for iPhone and the iPad invoice walkthrough cover those, and one subscription covers iPhone, iPad, Mac and Vision Pro.
Bottom line
For a stack of PDFs that has to become one CSV on a Mac: select the files, drop them on ignitai, write one instruction that names the columns, the grain and the formats, check the page count, and convert. Then compare a sum and a count against the documents before you import. For hundreds of identically formatted text PDFs, a pdfplumber loop is a fair alternative if you’re happy to maintain it.
Get ignitai on the App Store — free download; your first document (up to 4 pages) converts free with Sign in with Apple, and one subscription covers iPhone, iPad, Mac, and Vision Pro.
FAQ
How many PDFs can I batch convert to CSV at once on a Mac?
As many as your pages allow. Select the PDFs in Finder, drag them onto ignitai, give one instruction, and you get one CSV with one row per record across every file. Before it runs, ignitai shows how many pages the batch will use and how many you have left; the subscription includes 80 pages a week, up to 320 a month, and extra pages cover a bigger batch.
Do the PDFs get uploaded during a batch conversion?
The PDFs stay on your Mac. Each one is read on the Mac with Apple’s built-in text recognition on every supported macOS version (14.4 and later), and only the recognized text is sent to ignitai’s servers, where the CSV is built. macOS Tahoe adds table-layout recognition, which sharpens dense tables.
How much does batch PDF to CSV conversion cost on Mac?
ignitai is a free download, and your first document (up to 4 pages) converts free. After that, batch conversion is part of the $29.99/month subscription, which includes 80 pages a week (up to 320 a month); extra pages come in packs that never expire, and ignitai shows the page count before every run. Cancel anytime.