# OCR dependencies

These files are served from the BviviFy app's own origin. Recognition runs in
the visitor's browser; the image is never sent to an OCR service. The first
recognition needs an internet connection to obtain the engine and language
data. This bundle alone does not make the entire website available offline.

| Component | Pinned version | License | Source |
| --- | --- | --- | --- |
| Tesseract.js browser ESM API and worker | 7.0.0 | Apache-2.0, plus bundled third-party notices | https://github.com/naptha/tesseract.js |
| Tesseract.js-core WebAssembly builds | 7.0.0 | Apache-2.0 | https://github.com/naptha/tesseract.js-core |
| English language data, `4.0.0_best_int` | `@tesseract.js-data/eng` 1.0.0 | traineddata: Apache-2.0 | https://github.com/naptha/tessdata |
| Traditional Chinese language data, `4.0.0_best_int` | `@tesseract.js-data/chi_tra` 1.0.0 | traineddata: Apache-2.0 | https://github.com/naptha/tessdata |

The language-data npm package metadata declares MIT for its package wrapper;
the actual model repository distributes Apache-2.0, reproduced in
`tessdata/LICENSE`. Tesseract.js and core licenses and minified-bundle notices
are retained alongside their files.

`ocr-manifest.json` records exact package tarballs, model variant, file sizes,
and SHA-256 digests. Files are copied without modification from the pinned
npm packages. All six core variants are retained so Tesseract can select the
compatible SIMD / relaxed-SIMD / LSTM build. Only one variant is fetched for
a recognition session.

Reproduction (in a scratch directory, using an existing npm installation):

```sh
npm pack tesseract.js@7.0.0 tesseract.js-core@7.0.0 @tesseract.js-data/eng@1.0.0 @tesseract.js-data/chi_tra@1.0.0
```

Copy `dist/tesseract.esm.min.js`, `dist/worker.min.js`, the license files,
all core `*.wasm.js` variants, and the two models from each package's
`4.0.0_best_int/` directory into the current paths. No CDN runtime fallbacks
are configured.
