Tesseract-OCR 4.1

Python

            Tesseract-OCR 4.1

предисловие

Tesseract-OCR — это бесплатный механизм распознавания текста для распознавания изображений с открытым исходным кодом.Первоначальный механизм Tesseract был разработан лабораторией Hewlett-Packard (HP), а затем внес свой вклад в индустрию программного обеспечения с открытым исходным кодом, а затем Google улучшил, изменил ошибки, оптимизировал и исправил -вышел. Он может преобразовать текст на картинке, которую вы хотите распознать, в текст в соответствии с вашей командой. На данный момент он поддерживает распознавание более 60 языков, включая упрощенный китайский, традиционный китайский, английский, японский, корейский и так далее.

Подготовка окружающей среды

1. Установите тессеракт версии 4.1.

  • ссылка для скачивания :digi.bib.uni-mannheim.de/tesseract/

    Перейдите на страницу загрузки и выберите tesseract-ocr-w64-setup-v4.1.0.20190314.exe.

image-20210530130753699.png

  • В процессе установки просто все время нажимайте "Далее". Путь установки можно настроить, а языковую библиотеку проверять не нужно. В любом случае, вам нужно зайти на GitHub, чтобы потом скачать лучшую модель.

2. Скачать tessdata_best

Что такое tessdata_best?

tessdata_best — лучшая модель обучения, в которой мы позже будем использовать технологию LSTM tesseract.

image-20210530145456699.png

  • После распаковки скопируйте и вставьте следующие 4 файла вКаталог Tesseract-OCR\tessdataВниз

    • chi_sim.traineddata
    • chi_sim_vert.traineddata
    • chi_tra.traineddata
    • chi_tra_vert.traineddata

3. Установите pytesseract

Чтобы использовать функциональность tesseract в коде Python,Установите pytesseract с помощью pip

  • Код теста выглядит следующим образом:

    from PIL import Image
    import pytesseract
    text = pytesseract.image_to_string(Image.open(r'D:\train\1.jpg'),lang='chi_sim')
    print(text)
    
  • Ошибки, с которыми вы можете столкнуться при использовании pytesseract

     raise TesseractNotFoundError()
    pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your path
    

    Добавлены глобальные переменные, по-прежнему подсказывает, что tesseract не установлен или отсутствует в PATH

    После установки pytesseract папка pytesseract будет создана в разделе site-packges в каталоге python Lib, в папке будет найден pytesseract.py, и будет найден следующий код

    tesseract_cmd = 'tesseract'
    

    Измените tesseract_cmd = 'tesseract' на: tesseract_cmd = 'D:\Tesseract-OCR\tesseract.exe'

    Указывает, что tesseract_cmd настроен с абсолютным путем, по которому вы установили tesseract, чтобы можно было найти tesseract.

4. Настройте переменные среды

Шаг 1. Добавьте путь установки в переменную Path системной среды.

image-20210530131140246.png

image-20210530131225935.png

Шаг 2: Добавьте tessdata (файл обученного шрифта) в системную переменную

переменная с именемTESSDATA_PREFIX

переменное значениеПуть к каталогу tessdata

image-20210530131802297.png

После завершения настройки введите в командной строкеtesseract -v, если он выглядит так, как показано на рисунке ниже, это означает, что конфигурация переменной среды выполнена успешно.

Основные инструкции:

tesseract --version Посмотреть версию tesseract

tesseract --list-langs Просмотр языковых библиотек, содержащихся в настоящее время в tesseract

image-20210530131422933.png

5. Скачайте jTessBoxEditor

зачем скачиватьjTessBoxEditor?

Когда tesseract обучается, требуетсяjTessBoxEditorСинтезировать образецtifдокумент
Это программное обеспечение требует среды JAVA (JRE), установка JAVA и настройка переменных среды относительно просты и не будут здесь описываться.Обратите внимание, что программное обеспечение не может работать без среды java.

ссылка для скачивания:sourceforge.net/projects/vi…

Перейдите на страницу загрузки и выберите «jTessBoxEditor-2.3.1.zip».

image.png

После распаковки дважды щелкнитеjTessBoxEditor.jarможно использовать, интерфейс выглядит следующим образом

image.png

простое преобразование

1. Процесс преобразования

Сначала подготовьте файл изображения, например 1.png.

1.jpg

Переключите командную строку на целевой каталог файлов изображений, например, мы конвертируем файл в 1.png (файлы изображений допускают несколько форматов), расположенный в D:\train, затем введите в командной строке

tesseract 1.jpg test -l chi_sim --psm 7

Действуйте, как показано ниже

image-20210530160419535.png

Откройте файл txt, чтобы просмотреть вывод

image-20210530155004452.png

2. Интерпретация команд

tesseract имя изображения имя выходного файла -l файл шрифта -psm pagesegmode

  • -l chi_sim означает использование упрощенного китайского шрифта (необходимо загрузить файл китайского шрифта, после распаковки сохранить его в каталоге tessdata, расширение файла шрифта — .raineddata, а имя файла упрощенного китайского шрифта: chi_sim.traineddata)

  • -psm 7 означает, что изображение test.png представляет собой строку текста.Этот параметр может снизить процент ошибок распознавания.По умолчанию 3

    Page segmentation modes (--psm) Режим сегментации страницы (перевод)
    0 Orientation and script detection (OSD) only. Только ориентация и определение сценария (OSD)
    1 Automatic page segmentation with OSD. Автоматическое пейджинг с OSD
    2 Automatic page segmentation, but no OSD, or OCR. (not implemented) Автоматическое разделение страниц, но без OSD или OCR
    3 Fully automatic page segmentation, but no OSD. (Default) Полностью автоматическое разделение страниц, но без экранного меню (по умолчанию)
    4 Assume a single column of text of variable sizes. Предположим, столбец текста переменного размера
    5 Assume a single uniform block of vertically aligned text. Предположим, что это единый блок вертикально выровненного текста.
    6 Assume a single uniform block of text. Предположим, что единый блок текста
    7 Treat the image as a single text line. Рассматривайте изображение как одну строку текста
    8 Treat the image as a single word. относиться к изображениям как к отдельным словам
    9 Treat the image as a single word in a circle. Рассматривайте изображение как одно слово в круге
    10 Treat the image as a single character. Рассматривайте изображения как отдельные символы
    11 Sparse text. Find as much text as possible in no particular order. Разреженный текст. Найдите как можно больше текста в произвольном порядке
    12 Sparse text with OSD. Разреженный текст с экранным меню
    13 Raw line. Treat the image as a single text line, Рассматривайте изображение как одну строку текста

Учебный процесс LSTM

Введение

Tesseract 4содержит новыйНейронные сетиМеханизм распознавания этого механизма значительно улучшил точность распознавания (изображение документа, изображение документа) по сравнению с предыдущими версиями. Поскольку китайский языковой пакет tesseract «chi_sim» имеет низкую точность распознавания для китайских рукописных шрифтов или изображений со сложными средами, необходимо тренироваться с его собственными образцами для конкретных ситуаций, чтобы улучшить скорость распознавания.Посредством обучения вы также можете сформировать свой собственный язык библиотека.

тренировочный процесс

1. Сгенерируйте tif-файл

  • использоватьjTessBoxEditorОбъедините несколько изображений для проверки, чтобы создать tif

Для выполнения последующих операций имя объединенного файла необходимо упорядочить по определенным правилам.
[lang].[fontname].exp[num].tif

  • lang означает название языка
  • fontname указывает имя шрифта
  • num указывает серийный номер

Мы сохраняем имя файла tif как:nml.num.exp0.tif

2. Создайте бокс-файл изображения tif.

tesseract nml.num.exp3.tif nml.num.exp3 -l chi_sim batch.nochop makebox

Выполнение вышеуказанной команды создаст файл с именем nml.num.exp3.box в нашей папке.

3. Дополнить и исправить бокс-файл

Откройте предыдущее программное обеспечение JTessBoxEdit, перейдите на вкладку «Редактор блоков», загрузите файл TIF, чтобы изменить блок (файл блока и файл tif должны находиться в одной папке)

image.png image.png image.png

4. Создайте lstmf-файл

tesseract nml.num.exp3.tif nml.num.exp3 -l chi_sim --psm 6 lstm.train

Выполнение вышеуказанной команды создаст файл с именем nml.num.exp3.lstmf в нашей папке.

5. Извлеките файл LSTM языка

На втором этапе подготовки среды используйте файл .traineddata в tessdata_best, чтобы извлечь файл .lstm.
Скопируйте загруженный файл .traineddata в папку обучения.

combine_tessdata -e chi_sim.traineddata chisim.lstm

Выполнение вышеуказанной команды создаст файл с именем chisim.lstm в нашей папке.

6. Начать обучение LSTM

Примечание. Нам нужно создать новый текстовый файл с именем chitraing.txt и указать абсолютный путь к файлу lstmf, созданному на шаге 4 (как показано ниже).
image.png

lstmtraining --model_output="D:\Program Files (x86)\train1\output" --continue_from="D:\Program Files (x86)\train1\chisim.lstm" --train_listfile="D:\Program Files (x86)\train1\chitraing.txt" --traineddata="D:\Program Files (x86)\train1\chi_sim.traineddata"

7. Синтезируйте новый файл обученных данных

lstmtraining --stop_training --continue_from="D:\Program Files (x86)\train1\output_checkpoint" --traineddata="D:\Program Files (x86)\train1\chi_sim.traineddata" --model_output="D:\Program Files (x86)\train1\test.traineddata"

8. Переместите новый файл обучаемых данных

В папке будет сгенерирован файл с именем test.traineddata, который мы скопируем в папку tessdata Tesseract-OCR, после чего сможем использовать его как язык для распознавания текста.