Skip to content


Choose a tag to compare
@Balearica Balearica released this 28 Sep 07:42
· 18 commits to master since this release

What's Changed

Major New Features

  1. Significantly smaller file sizes
    1. 54% smaller file sizes for English, 73% smaller for Chinese (see #806 for details)
    2. This results in a ~50% decrease in runtime for first-time users (who do not yet have the data downloaded/cached)
  2. Significantly lower memory usage
    1. Worker memory utilization in the web benchmark is reduced from 311 MB to 164 MB (47% reduction)
    2. The lower memory footprint makes it feasible to use more workers, significantly improving performance for projects that utilize schedulers for parallel processing
  3. Compatible with iOS 17 (using default settings)
    1. iOS 17 broke compatibility with Tesseract.js v4--upgrading to v5 should resolve
      1. See discussion section below for details

Breaking Changes Impacting Many Users

  1. createWorker arguments changed
    1. Setting non-default language and OEM now happens in createWorker
      1. E.g. createWorker("chi_sim", 1)
  2. worker.initialize and worker.loadLanguage functions now do nothing and can be deleted from code
    1. Loading the language and initialization now occurs in createWorker
    2. Workers can be re-initialized with different settings using worker.reinitialize

In other words, code should be modified from this:

const worker = await Tesseract.createWorker();
await worker.loadLanguage('eng');
await worker.initialize('eng');
const ret = await worker.recognize(file);

To this:

const worker = await Tesseract.createWorker("eng");
const ret = await worker.recognize(file);

Breaking Changes Impacting Fewer Users

  1. Users who manually set corePath will need to update the contents of their corePath directory
    1. corePath should point to a directory that contains all 4 of the files below from Tesseract.js-core v5:
      1. tesseract-core.wasm.js
      2. tesseract-core-simd.wasm.js
      3. tesseract-core-lstm.wasm.js
      4. tesseract-core-simd-lstm.wasm.js
    2. Tesseract.js will automatically select the correct version to use
  2. worker.detect function disabled by default
    1. Orientation + script detection is a function of the Legacy model only, which is no longer included by default
    2. To enable, set arguments legacyCore: true and legacyLang: true in createWorker options
      1. E.g. Tesseract.createWorker("eng", 1, {legacyCore: true, legacyLang: true});
  3. Language of progress logs standardized
    1. This should only impact users who parse status logs (e.g. to update a loading bar)

Non-Breaking Changes

  1. Language data loaded from jsdelivr by default (rather than GitHub pages)
    1. This should result in improved performance and uptime
  2. Separate "development" build (that produced and removed
  3. Documentation and examples were modified to prevent new users from using Tesseract.recognize and Tesseract.detect
    1. Users who already use these functions are encouraged to modify their code to use worker.recognize and worker.detect instead

Considering upgrading from v2 to v5? See #771 for a full guide for updating.

Full Changelog: v4.1.3...v5.0.0