Tesseract.js — это JavaScript-библиотека для оптического распознавания символов (OCR), основанная на самом популярном в мире движке распознавания текста. Она невероятно проста в использовании как на стороне клиента, так и на сервере с Node.js.
На серверной стороне Tesseract.js работает только с локальными изображениями. Однако с помощью пакета request для Node мы можем загрузить удалённое изображение по URL, а затем распознать его с помощью Tesseract.js.
Рассмотрим этот процесс в три этапа:
— Напишем код для загрузки удалённого файла в Node
— Напишем код для распознавания текста в локальном файле с помощью Tesseract
— Объединим два этих фрагмента
В итоге у нас получится всего пятнадцать строк JavaScript-кода для распознавания текста в изображениях по URL. Звучит неплохо? Тогда приступим.
Пакет request «создан для максимально простого выполнения HTTP-запросов» в Node.js. Мы будем использовать его для открытия URL и передачи потока данных в файловую систему с помощью стандартной библиотеки Node.js. По завершении вызовем callback-функцию.
Вставьте этот код в новый файл download.js:
Мы используем пример изображения из документации Tesseract, которое выглядит так:
Установите request и запустите скрипт:
Проверьте директорию — вы должны увидеть новый файл. Теперь распознаем текст в этом загруженном файле.
Начать работу с Tesseract.js очень просто. Вставьте этот код в файл ocr.js.
Установите Tesseract.js и запустите скрипт:
Когда Tesseract запустится (~10 секунд на моём MacBook Pro), вы увидите обновления прогресса, а затем распознанный текст в `result.text`.
В объекте `result` скрыто *много* дополнительных данных, если вам интересно покопаться.
Теперь у нас есть код для загрузки удалённого файла и код для распознавания текста в локальном файле — осталось только объединить их.
Вставьте этот код в новый файл download-and-ocr.js:
Здесь мы сделали следующее:
— Начали с кода из download.js
— Подключили Tesseract.js
— Вставили код из ocr.js в callback-функцию, которая выполняется после завершения загрузки файла.
Запустите скрипт, заменив URL на свой, если хотите:
Вот и всё! Всего три простых шага — и мы используем Tesseract.js для распознавания текста в изображении по URL. Лично я планирую использовать Tesseract.js вместе с Twilio MMS для обработки фотографий, которые делаю во время прогулок по Нью-Йорку. Возможно, я буду извлекать номера телефонов из рекламы и проверять их через наш Lookup API, чтобы узнать, являются ли они номерами Twilio.
А что создадите вы?
Если хотите узнать больше, ознакомьтесь с:
— Документацией по потоковой загрузке файлов с помощью Request в Node.js
— Полной документацией по API Tesseract.js
— Быстрыми стартами для JavaScript от Twilio
Если вам понравилась эта статья, поблагодарите Гильермо Вебстера и Кевина Квока за их героические усилия по портированию Tesseract на JavaScript. И, конечно, не стесняйтесь писать мне, если у вас есть вопросы или вы создали что-то, чем хотите поделиться.
Удачного кодинга!