Бесплатная JavaScript‑библиотека для извлечения текста из отсканированных изображений и форм
Открытая библиотека JavaScript для оптического распознавания символов (OCR), позволяющая извлекать текст из черно-белых отсканированных изображений и документов с поддержкой предобработки изображений и шаблонов в веб‑приложениях или Node.js.
В современном цифровом мире технология оптического распознавания символов (OCR) играет решающую роль в преобразовании отсканированных изображений, рукописных заметок или печатных документов в редактируемые и поисковые данные. Для разработчиков JavaScript, ищущих легкое и открытое решение, Guten OCR предлагает убедительный выбор. Этот OCR‑движок, основанный на JavaScript, разработан с упором на простоту, что делает его идеальным для внедрения функций OCR непосредственно в браузерные или Node.js приложения. В библиотеку включено несколько важных функций, таких как распознавание символов по шаблонам, пороговая обработка и бинаризация изображений, сегментация символов, сопоставление шаблонов и сборка текста, поддержка модульной кодовой базы и т.д. Он ориентирован на распознавание печатного текста из черно‑белых отсканированных документов и лучше всего подходит для хорошо отформатированного текста, такого как книги или формы.
Guten OCR — это открытый OCR‑движок на JavaScript, созданный компанией Gutenye. В отличие от тяжёлых OCR‑инструментов, требующих внешних зависимостей или сложной настройки, Guten OCR полностью написан на JavaScript, что позволяет запускать его в веб‑браузере или на сервере с Node.js. Библиотека использует базовые методы обработки изображений для сегментации символов и их распознавания с помощью системы распознавания шаблонов символов. Хотя пока он не может конкурировать с коммерческими OCR‑движками, такими как Tesseract, в поддержке многоязычного или рукописного текста, его простота и возможность модификации делают его отличным вариантом для образовательных проектов, прототипов или встроенных OCR‑функций в пользовательских веб‑приложениях. В отличие от Tesseract и других крупных движков, Guten OCR намеренно лёгок и сфокусирован — что делает его отличной отправной точкой для тех, кто хочет понять, как работает OCR изнутри.
Начало работы с Guten OCR
Рекомендуемый способ установки Guten OCR — использовать Brew. Пожалуйста, используйте следующую команду для беспроблемной установки.
Установите Guten OCR через Brew
brew install git-lfs Установить Guten OCR через GitHub
git clone git@github.com:gutenye/ocr.git Вы также можете установить его вручную; загрузите последние файлы релиза напрямую из репозитория GitHub.
Предобработка изображений перед операциями OCR
Библиотека открытого кода Guten OCR полностью написана на JavaScript, что делает её совместимой как с браузерными, так и с Node.js средами. Она включает встроенные функции предварительной обработки изображений для повышения точности распознавания. Поддерживается бинаризация изображений (преобразование в черно‑белый), шумоподавление, коррекция наклона и многое другое. Ниже приведён пример, показывающий, как разработчики могут применять несколько шагов предварительной обработки изображений перед выполнением OCR‑операции над изображениями.
Как применить предварительную обработку изображения перед операцией OCR с помощью JavaScript-библиотеки?
const { preprocess } = require('guten-ocr');
// Apply multiple preprocessing steps
const processedImage = preprocess(imageData, [
'grayscale', // Convert to grayscale
'binarize', // Convert to black and white
'deskew', // Correct skew
'denoise' // Reduce noise
]);
// Then perform OCR on the processed image
ocr.recognize(processedImage).then(/* ... */);
Распознавание символов с помощью шаблонов
Библиотека JavaScript Guten OCR предоставляет полную поддержку выполнения OCR‑операций с использованием шаблонов в JavaScript‑приложениях. В основе Guten OCR лежит система сопоставления шаблонов. Вместо обучения модели машинного обучения она использует предопределённые шаблоны символов. Это делает систему быстрее и проще для понимания, но более чувствительной к согласованности шрифтов и макета. Для выполнения этой задачи библиотека рендерит каждый символ (A–Z, a–z, 0–9 и т.д.) на холсте, после чего бинарная матрица каждого символа становится эталонным шаблоном. При анализе изображения библиотека сравнивает сегменты изображения с этими шаблонами, чтобы найти наилучшее совпадение. Она делает это, используя комбинацию вертикального и горизонтального сканирования линий для определения ограничивающих рамок.
Сегментация символов с помощью библиотеки OCR
Открытая JavaScript‑библиотека Guten OCR позволяет разработчикам программного обеспечения легко выполнять сегментацию символов. После бинаризации изображения следующий шаг — сегментация отдельных символов. Guten OCR сканирует строки и столбцы, чтобы обнаружить области с плотными черными пикселями, разделяя их на потенциальные символы. Ниже приведён пример, демонстрирующий, как разработчики могут выполнять сегментацию символов с помощью JavaScript‑OCR‑библиотеки.
Как выполнить сегментацию символов с использованием JavaScript-библиотеки?
const segment = require('guten-ocr/segment');
const boxes = segment(binarized); // returns array of [x, y, width, height]