В этом руководстве представлены пошаговые инструкции по обучению Tesseract 5 в контейнере Docker. Docker позволяет создать воспроизводимую среду для обучения моделей Tesseract OCR. Следуя шагам, описанным ниже, вы можете настроить контейнер Docker с Ubuntu, установить Tesseract 5 и необходимые инструменты обучения, получить данные обучения, упорядочить данные и начать процесс обучения.
Создать контейнер Ubuntu
1. Откройте терминал.
2. Извлеките образ Ubuntu Docker:
docker pull ubuntu
Если вас интересует конкретная версия, вы можете указать ее:
docker pull ubuntu:22.04
3. Запустите образ Docker:
docker run -ti --rm ubuntu /bin/bash
Примечание. По умолчанию образ Docker Ubuntu не имеет доступной команды lsb_release. Вместо этого вы можете использовать команду cat для проверки информации об ОС.
4. Проверьте версию ОС:
cat /etc/os-release
Если пакет lsb-release не установлен, обновите исходники пакета и установите его:
apt update && apt install lsb-core
Еще раз проверьте версию ОС:
lsb_release -a
5. Создайте общий каталог между вашей хост-системой и контейнером Docker: в терминале контейнера создайте каталог с именем Docker_Share:
mkdir -p Docker_Share
Убедитесь, что каталог создан:
ls
6. В отдельном терминале на хост-компьютере проверьте идентификатор текущего работающего контейнера:
docker ps
Запишите идентификатор контейнера.
7. Сохраните состояние контейнера Docker как новый образ:
docker commit -p container_id new_image_name
Например:
docker commit -p 3409ehfu384f myubuntu
Замените container_id на идентификатор контейнера, полученный на предыдущем шаге, а new_image_name на желаемое имя нового образа.
8. Убедитесь, что новый образ был создан:
docker images
9. Остановите Docker-контейнер:
docker stop container_id
Замените container_id на полученный ранее ID контейнера.
10. Перезапустите контейнер с общими данными:
docker run -ti -v /host/machine/dir:/Docker_Share image_name /bin/bash
Например:
docker run -ti -v C:\training_data:/Docker_Share myubuntu /bin/bash
Замените /host/machine/dir на путь к каталогу на хост-компьютере, которым вы хотите поделиться с контейнером, image_name на имя нового образа, созданного на предыдущем шаге, и /bin/bash, чтобы запустить контейнер с терминалом.
Установите Tesseract 5 в контейнер
1. В терминале контейнера обновите исходники пакета и установите Git:
apt update && apt install git
2. Клонируйте репозиторий Tesseract:
git clone https://github.com/tesseract-ocr/tesseract.git
Убедитесь, что каталог tesseract создан:
ls
3. Установите необходимые для Tesseract вспомогательные библиотеки:
apt update && apt install autoconf automake libtool pkg-config libpng-dev libjpeg8-dev libtiff5-dev zlib1g-dev libwebpdemux2 libwebp-dev libopenjp2-7-dev libgif-dev libarchive-dev libcurl4-openssl-dev libicu-dev libpango1.0-dev libcairo2-dev libleptonica-dev
4. Перейдите в каталог /tesseract:
cd /tesseract
5. Запустите скрипт autogen.sh:
./autogen.sh
6. Запускаем скрипт configure:
./configure
7. Соберите и установите Tesseract OCR 5:
make make install ldconfig
8. Установите средства обучения Tesseract:
make training make training-install
9. Клонируйте репозиторий tesstrain:
git clone https://github.com/tesseract-ocr/tesstrain.git
10. Перейдите в каталог tesstrain:
cd /tesseract/tesstrain
11. Установите wget и необходимые библиотеки Python:
apt update && apt install wget python3-pip pip install -r requirements.txt
12. Получить языковые данные:
make tesseract-langdata
Получить тренировочные данные
Для обучения модели Tesseract OCR вам потребуются следующие обучающие данные:
- [lang].[font].exp[number].tif (файл изображения строковой строки)
- [lang].[font].exp[number].gt.txt (наземный текстовый файл)
Например:
- chi_tra.DFKai.exp0.tif
- chi_tra.DFKai.exp0.gt.txt
Необязательные обучающие данные включают в себя:
- [язык].[шрифт].exp[номер].box
Файлы .box содержат информацию о позициях символов на изображении, улучшая процесс обучения и точность модели.
Переместите все обучающие данные в каталог, общий для контейнера Docker. Например, если ваш общий каталог на хост-компьютере — C:\training_data, поместите все файлы .gt.txt, .tif и .box в этот каталог.
Следите за новостями, в которых я подробно расскажу о процессе создания обучающих данных.
Организуйте тренировочные данные
1. Скопируйте тренировочные данные из общего каталога в соответствующее место:
cp -r /Docker_Share /tesseract/tesstrain/data/[lang].[font]-ground-truth
Замените [lang].[font] информацией о соответствующем языке и шрифте.
2. Скачайте нужные вам файлы обучаемых данных из репозитория tessdata_best. Обязательно загрузите файл eng.traineddata для любого языка, который вы изучаете. Например, если вы тренируете традиционный китайский (чи_тра), загрузите файл chi_tra.traineddata.
3. Переместите загруженные файлы обучаемых данных в общий каталог. Например, переместите eng.traineddata и chi_tra.traineddata в C:\training_data на хост-компьютере.
4. Переместите файлы обучаемых данных в каталог обучения по умолчанию:
mv /Docker_Share/*.traineddata /usr/local/share/tessdata/
Теперь ваши обучающие данные организованы и готовы для обучения новой модели.
Начать обучение
1. Перейдите в каталог обучения:
cd /tesseract/tesstrain
2. Если у вас есть файлы .box и вы хотите избежать их перезаписи в процессе обучения, измените Makefile:
apt update && apt install nano cd /tesseract/tesstrain nano Makefile
Найдите строки, начинающиеся с %.box, и закомментируйте их.
Оригинальные строки:
%.box: %.png %.gt.txt
PYTHONIOENCODING=utf-8 $(PY_CMD) $(GENERATE_BOX_SCRIPT) -i "$*.png" -t "$*.gt.txt" > "$@"
%.box: %.bin.png %.gt.txt
PYTHONIOENCODING=utf-8 $(PY_CMD) $(GENERATE_BOX_SCRIPT) -i "$*.bin.png" -t "$*.gt.txt" > "$@"
%.box: %.nrm.png %.gt.txt
PYTHONIOENCODING=utf-8 $(PY_CMD) $(GENERATE_BOX_SCRIPT) -i "$*.nrm.png" -t "$*.gt.txt" > "$@"
%.box: %.raw.png %.gt.txt
PYTHONIOENCODING=utf-8 $(PY_CMD) $(GENERATE_BOX_SCRIPT) -i "$*.raw.png" -t "$*.gt.txt" > "$@"
%.box: %.tif %.gt.txt
PYTHONIOENCODING=utf-8 $(PY_CMD) $(GENERATE_BOX_SCRIPT) -i "$*.tif" -t "$*.gt.txt" > "$@"
Модифицированные строки:
# %.box: %.png %.gt.txt # PYTHONIOENCODING=utf-8 $(PY_CMD) $(GENERATE_BOX_SCRIPT) -i "$*.png" -t "$*.gt.txt" > "$@" # %.box: %.bin.png %.gt.txt # PYTHONIOENCODING=utf-8 $(PY_CMD) $(GENERATE_BOX_SCRIPT) -i "$*.bin.png" -t "$*.gt.txt" > "$@" # %.box: %.nrm.png %.gt.txt # PYTHONIOENCODING=utf-8 $(PY_CMD) $(GENERATE_BOX_SCRIPT) -i "$*.nrm.png" -t "$*.gt.txt" > "$@" # %.box: %.raw.png %.gt.txt # PYTHONIOENCODING=utf-8 $(PY_CMD) $(GENERATE_BOX_SCRIPT) -i "$*.raw.png" -t "$*.gt.txt" > "$@" # %.box: %.tif %.gt.txt # PYTHONIOENCODING=utf-8 $(PY_CMD) $(GENERATE_BOX_SCRIPT) -i "$*.tif" -t "$*.gt.txt" > "$@"
Нажмите Ctrl + O, а затем Enter, чтобы сохранить измененный Makefile.
Нажмите Ctrl + X, чтобы выйти из редактора.
3. Начните обучение новой модели:
make training MODEL_NAME=[lang].[font] TESSDATA=/usr/local/share/tessdata
Замените [lang].[font] информацией о соответствующем языке и шрифте.
4. Если вы хотите доработать существующую модель, используйте параметр START_MODEL:
make training MODEL_NAME=[lang].[font] START_MODEL=[lang] TESSDATA=/usr/local/share/tessdata
Замените [lang].[font] информацией о соответствующем языке и шрифте.
После обучения вы можете найти обученные данные новой модели в выходном пути по умолчанию:
cd /tesseract/tesstrain/data/[lang].[font] ls
Замените [lang].[font] информацией о соответствующем языке и шрифте.
6. Скопируйте обученные данные новой модели в общий каталог:
cp /tesseract/tesstrain/data/[lang].[font]/[lang].[font].traineddata /Docker_Share
Замените [lang].[font] информацией о соответствующем языке и шрифте.
Файл обучаемых данных теперь будет доступен в общем каталоге на вашем хост-компьютере.
Ссылка
Подробные инструкции и дополнительную информацию можно найти на следующих ресурсах: