Суть обновления: WebAssembly и кроссплатформенность
Tesseract.js — это JavaScript-библиотека, которая портирует движок OCR Tesseract в браузер и среду Node.js, используя WebAssembly. Проект не модифицирует ядро Tesseract, а обертывает его для работы в JS-среде. Это позволяет извлекать текст из изображений практически на любом языке без необходимости серверной обработки.
Библиотека поддерживает работу через webpack, esm, тег <script> с CDN, а также нативно в Node.js. Для разработчиков это означает гибкость: можно запускать OCR как в клиентской части SPA, так и на бэкенде.
Требования и совместимость версий
Важно учитывать требования к среде выполнения при выборе версии. В последних релизах были внесены существенные изменения в архитектуру инициализации воркеров и управление памятью.
| Версия | Требование к Node.js | Ключевые изменения |
|---|---|---|
| v7 | v16+ | Актуальная версия. Оптимизация памяти и времени выполнения. |
| v6 | v14+ | Исправлен утечка памяти. По умолчанию отключены форматы вывода кроме text (например, hocr). |
| v5 | — | Размер файлов уменьшен на 54% (англ) и 73% (кит.). Упрощена инициализация через createWorker. |
Как использовать: Пример кода
API библиотеки стало проще. Создание воркера теперь асинхронно. Для распознавания нескольких изображений рекомендуется создавать воркер один раз, обрабатывать файлы и затем завершать работу воркера методом terminate().
- Установка:
npm install tesseract.jsилиyarn add tesseract.js. - Базовый сценарий:
import createWorker from 'tesseract.js';
async () => {
const worker = await createWorker('eng');
const ret = await worker.recognize('https://example.com/image.png');
console.log(ret.data.text);
await worker.terminate();
}
Альтернативы и ограничения
Важно отметить, что Tesseract.js не поддерживает PDF-файлы напрямую и не улучшает точность распознавания за счет модификации моделей. Если вам нужна работа с PDF или улучшенная точность, разработчики рекомендуют библиотеку Scribe.js, которая расширяет возможности Tesseract, добавляя поддержку PDF и улучшенные модели распознавания.
Сообщество и вклад
Проект активно развивается за счет сообщества. Доступны примеры для Electron, TypeScript, а также расширения для Chrome (Manifest V3). Для разработчиков доступен локальный сервер разработки на http://localhost:3000 для тестирования изменений в коде.
Источник: Github ↗
