Local Image OCR
Turn English, Simplified Chinese and mixed-script text in a single JPEG / PNG / WebP image into editable text, in your browser.Processed locally · original image never uploaded
Operations
Real examples and limits
Default 10 MiB / 12 MP per image; oversized images or low-memory devices get a downscale-first hint plus the img site configuration. JPEG / PNG / WebP only; no PDF OCR, handwriting guarantee or server-side OCR. Language data / WASM core must be self-hosted or come from a stable configured source and be version-cached; no real OCR model was bundled, downloaded or tested this round, so uploaded-image recognition is unavailable. Documentation pages never load the OCR model. Recognition may contain errors — proofread; no absolute accuracy guarantee.
FAQ
Is my image uploaded?
No. Only GET requests for versioned model resources are allowed by design; there is no upload endpoint. Images and recognized text never enter analytics, URLs or error logs. This build does not even enable real model downloads.
Why do built-in samples produce text but uploaded files report an error?
This round has no browser, WASM or worker, and Tesseract.js / traineddata were not tested. Built-in samples come from an injectable fixture adapter and are explicitly marked demo; a real upload fails with OCR_ENGINE_UNAVAILABLE rather than faking recognition.
Is the result always accurate?
No guarantee. Clear English, Simplified Chinese and mixed samples each list plausible errors (0/O, 己/已, No./N0., missing mixed-script spaces); the result is editable with a proofread reminder.
What happens when I cancel?
The chunked CPU loop checks AbortSignal between slices; the worker enters terminated with CPU inactive. The next run reinitializes it, while a completed worker is reused to avoid re-downloading data.
Will TXT download or copy lose line breaks?
No. TXT is UTF-8 without BOM; copy preserves line breaks without trimming, with a default ocr-image-to-text-<timestamp>.txt filename.
What if the image is too large or memory is low?
Downscale first: default limits are 10 MiB / 12 MP, with img site config maxBytes=10485760 and maxPixels=12000000. Related-site config is plain text until the target is live; no dead links are emitted.