Image Table to Excel & CSV avatar

Image Table to Excel & CSV

Pricing

from $2.00 / 1,000 tables

Go to Apify Store
Image Table to Excel & CSV

Image Table to Excel & CSV

Turn a screenshot, photo or scan of a table into rows, a CSV and an Excel file. OCR runs inside the Actor, no API key needed. Billed only for tables delivered: $2 per 1,000.

Pricing

from $2.00 / 1,000 tables

Rating

0.0

(0)

Developer

Brandon Ob

Brandon Ob

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 hours ago

Last modified

Categories

Security

Limited permissions

Share

Image Table to Excel & CSV: turn a screenshot or photo of a table into rows

This image to Excel converter turns a picture of a table (a screenshot, a phone photo of a printed page, a scanned sheet) into rows you can export, plus an Excel file and a CSV file per picture. OCR (text recognition) runs inside the Actor, so there is no API key to set up and no image is sent to another service. You are charged per table delivered, never for a picture that failed or had no table.

What does Image Table to Excel & CSV do?

  • Reads pictures of tables from public links: PNG, JPG, WEBP, BMP or TIFF.
  • Runs OCR inside the Actor and rebuilds the rows and columns from the layout.
  • Returns each table as a dataset item with every row keyed by the column header.
  • Writes one Excel file (frozen header row) and one CSV file per picture, each with a download link.
  • Reports an OCR confidence score per table, and returns stray text above or below the table (a title, a footnote) in textOutsideTable.
  • Lets you tune the column gap and a minimum confidence when a layout is tricky.
  • Includes a built-in demo table (input sample) so you can see the output before using your own pictures.

Use cases

  • Analysts: turn a chart's data table or a dashboard screenshot into a spreadsheet you can work with.
  • Operations and admin teams: digitize printed price lists, schedules or inventory sheets photographed on a phone.
  • Researchers and students: capture tables from slides, posters or book pages as rows.
  • Finance and bookkeeping: convert screenshots of statements or reports that cannot be exported.
  • Automation builders: add an "image table to rows" step after a screenshot or file upload, and send the rows on to Google Sheets.

How to use it

  1. Open the Actor in Apify Console. The default input, sample, runs the built-in demo table; replace it with your image links, one per line. Each file must open in a browser without a login.
  2. Click Start.
  3. Open the Tables view, or use the excelUrl column for one spreadsheet per picture. Check the confidence value on your first run.
  4. If columns come back merged or split, adjust Column gap and run again.
  5. To process new pictures regularly, save the input as a task and schedule it, or call the Actor from the API.

Input

FieldWhat it does
imageUrlsDirect links to pictures of tables, one per line. sample runs the demo table.
firstRowIsHeaderUse the first row as column names (on by default); off gives Column 1, Column 2, …
columnGapHow wide the empty space between columns must be, in text heights (default 0.6). Raise it if a column splits, lower it if two columns merge.
minConfidenceIgnore text the OCR is less sure of than this, 0 to 1 (default 0.5).
minRowsIgnore pictures with fewer data rows than this (default 2).
maxItemsStop after this many tables (default 100).

Example input:

{
"imageUrls": ["sample"],
"firstRowIsHeader": true,
"columnGap": "0.6",
"minConfidence": "0.5",
"minRows": 2
}

Output

One dataset item per picture. Real output from the default run (built-in demo table, 4 rows, OCR confidence 0.99), shortened:

{
"imageUrl": "built-in sample table",
"columns": ["Item", "Qty", "Unit price", "Total"],
"rowCount": 4,
"rows": [
{"Item": "Standing desk", "Qty": "2", "Unit price": "349.00", "Total": "698.00"},
{"Item": "Monitor arm", "Qty": "4", "Unit price": "45.50", "Total": "182.00"},
{"Item": "USB-C dock", "Qty": "3", "Unit price": "129.99", "Total": "389.97"}
],
"textOutsideTable": [],
"confidence": 0.99,
"csvUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/01-sample.csv",
"excelUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/01-sample.xlsx",
"extractedAt": "2026-10-26T11:00:36+00:00"
}

The key-value store record SUMMARY lists pictures that could not be read and pictures where no table was found. The dataset can be downloaded as JSON, CSV, Excel, XML or HTML, or read through the API.

Pricing

Pay per event: $2.00 per 1,000 tables delivered, plus a $0.00005 charge per Actor start. One picture with one table is one event, whatever its size. Pictures that fail or contain no table are not charged. You can set a maximum cost per run.

Example: 100 screenshots of tables cost about $0.20.

Integrations and API

Run it and get the rows back in one call:

curl -X POST "https://api.apify.com/v2/acts/adhistory~image-tables-to-excel/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"imageUrls": ["https://example.com/table.png"]}'

Python, with the apify-client package:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("adhistory/image-tables-to-excel").call(run_input={
"imageUrls": ["https://example.com/table.png"],
})
for table in client.dataset(run["defaultDatasetId"]).iterate_items():
print(table["rowCount"], table["confidence"], table["excelUrl"])

Like every Apify Actor, it also works with Make, Zapier and n8n, with webhooks and schedules, and as a tool for AI agents through the Apify MCP server.

FAQ

How accurate is it? Best on sharp, straight, printed text with clear spaces between columns. Skewed photos, handwriting, very small text and low contrast give wrong or missing characters. Check the confidence value and spot-check your first run.

Can one picture hold several tables? One table per picture is supported. Two tables side by side or stacked come back as one, so crop them first.

My table came back merged or in pieces. Use a larger or sharper picture, then try a different columnGap (0.3 to 1.5).

Which languages work? Text recognition is tuned for Latin script and Chinese; other scripts are not supported.

Are there size limits? Files up to 20 MB from public links. Pictures are scaled down to 4,000 pixels on the longest side.

Is my image sent to a third-party OCR service? No. OCR runs inside the Actor's own container.

Do you read PDFs? Not this Actor. For PDFs with real text, use PDF Table to Excel & CSV.

Found a bug or need a feature? Open an issue on the Issues tab — I usually reply within a day.