- суг команда
- Добавить Автора
предисловие
Некоторое время назад я обнаружил в своей работе, что если мы сможем распознавать некоторый текст на изображениях того же стандарта, это может значительно улучшить наш пользовательский опыт. Поэтому я взглянул на функции, связанные с распознаванием текста изображения.
Во-первых, чтобы понять API крупных производителей, скорость распознавания, естественно, высокая, и эффект очень хороший, но проблема в том, что количество вызовов ограничено, и модель не находится под вашим контролем, или вам нужно зарядить деньги, чтобы сделать вас сильнее. (Вот пост, которым поделился кто-то другой:Распознавание текста изображений на основе Java на основе API-интерфейса Baidu (поддержка китайского, английского и китайского, а также смешанный английский язык) - TheLoveFromWSK - Блог CSDN)
Потом я сам узнал об ocr и tesseract. Эта статья в основном представляет собой приветственную версию вводного руководства по тессеракту... поэтому, пожалуйста, коснитесь значка
представлять
OCR: Оптическое распознавание символов (англ. Optical Character Recognition, OCR) относится к процессу анализа и распознавания файлов изображений текстовых данных для получения информации о тексте и макете.
Эта статья в основном посвящена Tesseract-OCR: Tesseract — это механизм OCR, разработанный Рэем Смитом в HP Bristol Labs в период с 1985 по 1995 год, и он был одним из лучших в тесте точности UNLV 1995 года. Но после 1996 года разработка практически остановилась. В 2006 году Google пригласил Смита присоединиться к нему, чтобы перезапустить проект. Текущая лицензия проекта — Apache 2.0. В настоящее время проект поддерживает основные платформы, такие как Windows, Linux и Mac OS. Но как движок он предоставляет только инструменты командной строки.
Установка Тессеракта
Студенты, заинтересованные в изучении исходного кода, могут посмотреть на адрес GitHub:GitHub - tesseract-ocr/tesseract: Tesseract Open Source OCR Engine (main repository)Ссылки на скачивание, mac, windows, linux есть, желательны и нужны:Downloads · tesseract-ocr/tesseract Wiki · GitHub
windows
1. После завершения загрузки непосредственно запустите исполняемый файл и установите его в соответствующую папку.
2. Настройте переменные среды:
Добавьте переменную среды в Path, адрес — это каталог установки Tesseract-ocr.
3. Добавьте системную переменную tessdata
Добавьте TESSDATA_PREFIX в системную переменную, значением переменной является папка tessdata в каталоге Tesseract-ocr
4. Введите cmd, чтобы проверить, завершена ли установка.
tesseract -v
Использование Тессеракта
После успешной установки естественно попробовать. 1. Можно подготовить картинку PNG или JPG (конкретные поддерживаемые форматы не указаны по одному, здесь я буду использовать png)
tesseract imagename outputbase [-l lang] [--oem ocrenginemode] [--psm pagesegmode] [configfiles...]
Объясните здесь, это tesseract [адрес изображения + имя + суффикс] [выходной адрес + имя] Например:
3. Это создаст файл DemoAnswer.txt в Shencheng в каталоге
А если это китайцы? Повторите вышеуказанную операцию
4. Китайское признание
tesseract imagename outputbase [-l lang]
[-l lang] в этой команде установить язык распознавания, по умолчанию английский, поэтому если вам нужно распознать китайский, вам нужно скачать китайский шрифт (На самом деле, внимательные студенты могли заметить при установке, что библиотека шрифтов была установлена автоматически) Перейдите в каталог tessdata в каталоге установки tesseract-ocr, чтобы просмотреть ***.traineddata — это шрифт
Если вы не загрузили его во время установки, вы можете зайти сюда, чтобы найти шрифт, который вам нужно скачатьData Files · tesseract-ocr/tesseract Wiki · GitHub
Поместите загруженный шрифт в каталог tessdata
4.2 Сбить команду
tesseract HelloWorldDemo.png DemoAnswer -l chi_sim
Это связано с тем, что используемые шрифты отличаются от наших шрифтов, поэтому, если нам нужно распознавать шрифты на наших изображениях, нам нужно обучить наши собственные шрифты.
Обучите модель
Шаги: (перенесено с github tesseract)
Подготовьте обучающий текст. Подготовьте учебный текст
Рендеринг текста в изображение + файл коробки (или создание файлов коробок ручной работы для существующих данных изображения). Преобразуйте текст в файл изображения+бокса (если у вас уже есть файл изображения, просто создайте файл бокса вручную).
Сделать файл unicharset. Создать файл unicharset
При желании сделайте словарные данные. Необязательно генерировать данные словаря
Запустите tesseract для обработки изображения + файла коробки, чтобы создать набор обучающих данных. Запустите tesseract для обработки предыдущего файла изображения + коробки для создания набора обучающих данных.
Запустите обучение на обучающем наборе данных. Обучение на основе обучающего набора данных
Объедините файлы данных. Объединить файлы данных
1. Измените название изображения на [lang].[fontname].exp[num].tif (рекомендуется выбирать tif, сохраняя как суффикс)
Например: BlackLang.HelloWorldDemo.exp0.tif
2. Создайте бокс-файл
Дайте фото официального сайта
tesseract BlackLang.HelloWorldDemo.exp0.tif BlackLang.HelloWorldDemo.exp0 -l chi_sim batch.nochop makebox
Это создаст файл .box в целевом каталоге, как показано ниже.
3. Использование jTessBoxEditor
Здесь, чтобы облегчить нам исправление файла коробки, здесь используется инструмент jTessBoxEditor:VietOCR - Browse /jTessBoxEditor at SourceForge.net
После установки откройте jTessBoxEditor, нажмите «Открыть» и выберите соответствующий tif (если tif и бокс не в одном каталоге, будут проблемы)
3.2 В окне просмотра вы можете увидеть увеличенное изображение каждого слова, чтобы убедиться, что оно выделено полностью.
4. Обучение
4.1 Создание tr-файла
Команда ввода: tesseract.exe [имя файла изображения tif] [имя сгенерированного файла tr] nobatch box.train т
tesseract.exe BlackLang.HelloWorldDemo.exp0.tif BlackLang.HelloWorldDemo.exp0 nobatch box.train
Введите команду: unicharset_extractor.exe [имя файла коробки]
unicharset_extractor.exe BlackLang.HelloWorldDemo.exp0.box
Здесь, если у вас есть несколько изображений, для которых необходимо создать библиотеку шрифтов, вам нужно объединить их в коллекцию символов.
Введите команду: unicharset_extractor.exe [имя файла первой коробки] [имя файла второй коробки] … Демонстрация здесь использует только одну коробку
4.3 Определите файл функций шрифта font_properties
<fontname> <italic> <bold> <fixed> <serif> <fraktur>
Имя tontname здесь должно соответствовать [lang].[fontname].exp[num].box;
Значение
Здесь мы создаем файл с именем font_properties в каталоге со следующим содержимым:
HelloWorldDemo 0 0 0 0 0
Вот файлы в нашем каталоге следующим образом: Целевое изображение .tif, анализ .box,Результат тренировки.tr, набор символов unicharset, файл функций font_properties
4.4 Создание словаря введите команду:
mftraining.exe -F font_properties -U unicharset -O BlackLang.unicharset BlackLang.HelloWorldDemo.exp0.tr
#这里如果有多个tr就连在后面写多个tr即可
cntraining.exe BlackLang.HelloWorldDemo.exp0.tr
#这里如果有多个tr就连在后面写多个tr即可
Как показано на рисунке:
Заинтересованные студенты могут открыть его через редактор, чтобы увидеть, что внутри, и они обнаружат, что в нем есть несколько интересных искаженных символов, хахаха.
4.5 Объединение файлов введите команду:
combine_tessdata BlackLang.
#combine_tessdata [lang].
Затем скопируйте только что сгенерированные [lang].traineddata в tessdata tesseract-ocr. Затем выполните команду:
tesseract HelloWorldDemo.png answer -l BlackLang
конец
Это просто демонстрационное обучение, этого недостаточно для использования в обычном продакшне, нужно много тренироваться на всех символах определенного шрифта. В общем, способность tesseract распознавать китайский по-прежнему очень плохая, не говоря уже о рукописном китайском, и скорость распознавания в основном нулевая. Но скорость распознавания английского языка и цифр по-прежнему очень впечатляет. Вот простая запись обмена для tesseract~
Сейчас много упакованных OCR типа pyocr, tess4J и т.д., или апи, предоставляемые крупными производителями, скорость распознавания очень высокая.Ведь модель очень хорошо обучена.Об этом я расскажу в следующий раз.