You grab a scan, throw it at an online OCR tool, and get back a wall of typos — “3” read as “8”, “O” as “0”, tables scrambled beyond recognition. The tool isn’t broken. The image wasn’t ready.

OCR engines (Tesseract / PaddleOCR / cloud services) are character recognition models that eat pixels. Feed them blurry, low-resolution, watermarked, skewed images and you’ll get blurry, low-quality output in return.

Real benchmark numbers (from OpenBenchmarking and ExpertBeacon 2025 comparisons):

EngineOverall accuracyPricing
Google Cloud Vision96.7%Pay per call
Amazon Textract95.8%Pay per call
Microsoft Azure93.5%Pay per call
Tesseract (open source)~90%Free, runs locally

Note that ~90% is the “ideal input” number. If you throw in a phone photo of a screen or a low-res image ripped from a PDF, accuracy dropping to 60–70% is the norm.

This guide explains how to push that 60% up to 95% — five preprocessing steps, each with concrete “what to do and how far to go” thresholds, plus a frontend-only workflow (Image Compressor + Image Cropper + Batch OCR).

Step 1: Resolution — DPI Must Be 300 or Higher

OCR models are trained on 300 DPI scans. Give them an 800×600 screenshot and they can’t read small text; give them a 4000×3000 original and they’ll grind slowly while wasting compute.

Empirical thresholds:

  • Printed body text: long edge at least 2000 px (~A4 at 300 DPI)
  • Tables, receipts, tickets: long edge at least 2400 px (more detail)
  • Handwriting: long edge 3000+ px (high character variance, needs more context)
  • Phone photos: long edge at least 2500 px, and keep the page flat

Below those thresholds, no engine will save you. Dedicated document-scan apps (Adobe Scan, Microsoft Lens) auto-detect edges, correct perspective, and upscale to the right resolution — strongly recommend installing one.

But if your source is already a low-res scan, don’t upscale with interpolation — it’ll just get blurrier. Re-scanning is the only fix.

Step 2: Contrast — Black Enough, White Enough

OCR models rely on pixel grayscale delta to separate text from background. Maximum-contrast text is the easiest to read.

What to do:

  • Black text on white background is best. Colored text, gray-on-gray, or reversed text (white on black) all significantly hurt accuracy.
  • If the original has pale-blue background with gray text, drop saturation to 0 and crank contrast to +50 in any image editor — OCR accuracy can climb 10–20 percentage points.
  • Old scanned documents get a yellow cast — push the color temperature cooler (de-yellow), or convert straight to grayscale. OCR models handle grayscale better.

Quick sanity check: zoom to 100%. Can you read every character in under a second? If not, OCR probably can’t either.

Step 3: Denoising — Moiré, Compression Artifacts, Watermarks

Three noise types wreck OCR the most:

Noise typeSourceFix
Moiré patternsScreen re-photographyUse a dedicated app (Adobe Scan), or reshoot at a different angle
JPEG compression artifactsJPGs saved over and overConvert to PNG first, then OCR
Watermarks, stamps, annotationsBuilt into the originalCrop out non-text regions with Image Cropper

In practice, invoices with semi-transparent watermarks cause OCR to read the watermark text along with the body, mixing everything into unusable output.

Most reliable approach: before OCR, run the image through Image Compressor to re-encode the format (PNG → JPG or vice versa). Strips old compression artifacts and controls final file size at the same time.

Step 4: Deskew — Beyond 3 Degrees, Accuracy Falls Off

Tesseract is highly sensitive to skew angle. 0–3 degrees barely matters; beyond 5 degrees accuracy falls off a cliff; past 10 degrees it’s basically unusable.

Manual correction:

  1. Rotate in any editor, fine-tuning in 0.5-degree increments, until text lines are perfectly horizontal
  2. Or use OpenCV’s HoughLinesP to auto-detect skew angle

Automated option: apps like Adobe Scan, Microsoft Lens, and Baidu Netdisk Scan all have auto edge detection + deskew built in — you snap a photo and get a clean, squared-up image ready to feed into OCR.

If the source is exported from a PDF, the rotation built into your PDF reader is usually enough.

Step 5: Pick the Right Engine and Parameters

Once the four preprocessing steps above are solid, the last step is engine + parameter selection.

Engine selection:

ScenarioRecommended engine
English printTesseract eng (open source, free, local)
Chinese printTesseract chi_sim + eng (combined)
Tables, ticketsDedicated structured recognition (PaddleOCR, Amazon Textract)
HandwritingCloud services (Google ML Kit, Baidu handwriting recognition)

Key Tesseract parameters:

  • --psm 6: assume a uniform block of text (most document scenarios)
  • --psm 11: sparse text (menus, receipts, signs)
  • --psm 12: combined with OSD (Orientation and Script Detection) for auto orientation detection
  • preserve_interword_spaces=1: preserve spaces between words (don’t enable for Chinese)

Before running batch jobs, spend 5 minutes testing on a single image to dial in parameters. With batch jobs, wrong parameters waste tens of minutes.

Hands-On: A Frontend-Only Three-Tool Workflow

Don’t want to install software, don’t want to upload files to the cloud (privacy)? Piick’s three tools run entirely in your browser locally — images never leave your computer.

Workflow

  1. Image Cropper: trim away irrelevant areas (watermarks, signatures, stamps, extra margins), leaving the core text region.
  2. Image Compressor: re-encode the image (Quality 80, max width 1920px) to strip old compression artifacts and control size.
  3. Batch Image to Text: upload a .zip or drag in multiple images. Each gets recognized individually, then packaged for download — one .txt per image, plus a merged text file and CSV index.

Why this combination works

  • Cropping removes distractions — watermarks, stamps, and extra margins never enter recognition
  • Compression strips artifacts — old JPEG noise gets overwritten by fresh encoding
  • Batch OCR stays local — Tesseract.js runs in the browser, no data uploaded. Great for invoices, IDs, internal documents

Good fit for

  • Digitizing paper contracts / invoices: batch-process dozens of scans
  • Book / paper excerpts: turn segments of screenshots into editable text
  • Whiteboard photos, slide captures: batch-convert into meeting notes

Not a good fit for

  • Handwriting (low accuracy, needs cloud services)
  • Complex tables (rows and columns scramble, needs a dedicated structured-recognition tool)
  • Formulas, code screenshots (recognition under 50%, OCR not recommended)

Image-to-text is 80% preprocessing, 20% engine tuning. Get the five steps above solid (resolution, contrast, denoising, deskew, parameter selection), and even open-source Tesseract hits 95%+ accuracy.

Need to batch-process scans? Open the Piick Batch Image to Text tool, upload a .zip or drag in a few dozen images — by the time you grab a coffee, your merged text files will be ready.