How to Get Batch OCR Results into Excel or Google Sheets
Table of Contents
Batch OCR extracts text from your images. Excel or Google Sheets turns that text into organized, sortable, filterable data. Connecting the two is a two-step workflow — and it is faster than manually typing anything, even if it requires a little cleanup on the spreadsheet side.
This guide covers three approaches: quick paste for small batches, structured paste with Text-to-Columns for formatted data, and a lightweight script approach for large volumes.
Step 1 — Extract Text with Batch OCR
Open the free Batch OCR tool, upload your images (receipts, invoices, forms, screenshots), select your language, and click Process All. When complete, click Download All as TXT to save the extracted text as a file.
The TXT file is organized like this:
--- receipt-jan-01.jpg --- Starbucks Date: Jan 1 2026 Total: $8.45 Payment: Visa --- receipt-jan-02.jpg --- Shell Gas Station Date: Jan 2 2026 Total: $52.10 Payment: Mastercard
Each image's text is separated by a filename header. This structure is what you will work with in Excel or Sheets.
Approach 1 — Quick Paste (Best for Under 20 Images)
For a small batch where you just need the text visible in a spreadsheet:
- Open the TXT file in any text editor
- Copy all the content (Ctrl+A, Ctrl+C)
- Open Excel or Google Sheets
- Click cell A1 and paste (Ctrl+V)
- All text lands in column A, one line per row
From there, use Ctrl+F (Find) to locate specific values — amounts, dates, vendor names. For receipts and invoices, this is often enough: you can scan the column visually or use Find to locate what you need.
To make it more structured: delete the separator header rows (the --- filename --- lines), then use Filter (Data > Filter in Excel) to search for specific keywords across all rows.
Approach 2 — Text to Columns for Labeled Data
When your OCR output has a consistent label: value pattern — like receipts that always say "Total: $X.XX" — Excel's Text to Columns splits it cleanly.
- Paste the OCR text into column A (one line per row)
- Select column A
- Go to Data > Text to Columns
- Choose Delimited, click Next
- Check "Other" and type a colon (
:) as the delimiter - Click Finish
Result: column A contains labels (Date, Total, Vendor, Payment) and column B contains values. Now you can filter column A for "Total" to see only the amount rows, copy column B, and paste into a clean summary sheet.
This works best when every document uses consistent field labels. Receipts from the same merchant are usually consistent enough. Mixed document types (some say "Amount:" others say "Total:") require a cleanup pass first.
Sell Custom Apparel — We Handle Printing & Free ShippingApproach 3 — Excel Flash Fill for Repeated Patterns
Excel's Flash Fill (Ctrl+E) learns patterns from examples. After pasting OCR text into column A, you can use Flash Fill to extract specific values into a new column:
- In column B, row 1, manually type the value you want to extract from A1 (e.g., the date)
- In column B, row 2, start typing the equivalent value from A2
- Press Ctrl+E — Flash Fill detects the pattern and fills the rest automatically
Flash Fill works well when the target value appears at a consistent position in the text — same line, same format. For "Total: $8.45" it can extract "$8.45" across a whole column once it sees two examples.
Google Sheets has a similar feature called Smart Fill (Data > Smart Fill) that works on the same principle.
Approach 4 — Python Script for Large Batches (50+ Images)
For large batches with consistent document formats, a short Python script parses the TXT output and writes directly to CSV — which Excel and Google Sheets open natively:
import csv
import re
# Read the batch OCR output
with open('ocr-results.txt', 'r') as f:
content = f.read()
# Split by document separator
documents = content.split('---')
documents = [d.strip() for d in documents if d.strip()]
rows = []
for doc in documents:
lines = doc.split('
')
filename = lines[0].strip() if lines else ''
text = '
'.join(lines[1:])
# Extract specific fields using regex
date_match = re.search(r'Date[:s]+(.+)', text, re.IGNORECASE)
total_match = re.search(r'Total[:s]+$?([d.]+)', text, re.IGNORECASE)
vendor = lines[1].strip() if len(lines) > 1 else ''
rows.append({
'File': filename,
'Vendor': vendor,
'Date': date_match.group(1).strip() if date_match else '',
'Total': total_match.group(1).strip() if total_match else '',
})
# Write to CSV
with open('receipts.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=['File','Vendor','Date','Total'])
writer.writeheader()
writer.writerows(rows)
print(f"Wrote {len(rows)} rows to receipts.csv")
Open receipts.csv in Excel directly — it imports with columns already separated. Adjust the regex patterns to match the specific labels in your document type.
Tips for Cleaner Results
- Process one document type per batch. A batch of all receipts from one vendor is much easier to structure into columns than a mixed batch of receipts, invoices, and forms.
- Use PNG instead of JPG for scanned documents. PNG preserves text edges better, improving OCR accuracy and reducing the amount of cleanup needed in the spreadsheet.
- Name your image files meaningfully before uploading. The TXT download uses filenames as section headers — "receipt-starbucks-jan01.jpg" gives you useful context in the output versus "IMG_4521.jpg".
- Do a find-and-replace pass first. Before importing into Excel, open the TXT in a text editor and remove separator headers with a simple find-and-replace on the
---pattern. This produces cleaner column data. - Use Google Sheets for collaborative cleanup. If multiple people are cleaning up OCR data, Google Sheets lets everyone work simultaneously on the same file without version conflicts.
Try It Free — No Signup Required
Runs 100% in your browser. No data is collected, stored, or sent anywhere.
Open Free Batch OCR ToolFrequently Asked Questions
Can batch OCR output directly to Excel format?
Not directly — the tool downloads a TXT file. Excel does not have a native OCR import feature. The TXT-to-Excel workflow described above (paste, Text to Columns, or Flash Fill) is the standard way to bridge the gap.
What is the best approach for expense receipt data entry?
For under 20 receipts, the quick paste approach with manual cleanup is fastest. For 20-100 receipts with consistent formatting, Text to Columns or Flash Fill. For 100+ receipts regularly, the Python CSV script pays off after the initial setup time.
Does Google Sheets have a built-in OCR import?
Yes — Google Drive can perform OCR on uploaded images and PDFs. Right-click an image in Google Drive and choose Open with Google Docs. Google Docs will OCR the image and create an editable document, which you can then copy into Sheets. This handles one file at a time, making the batch OCR tool faster for multi-image jobs.

