Сервис распознавания текста с глубоким обучением Xiaoxin Discovery

искусственный интеллект Python

заглавие

Сервис распознавания текста с глубоким обучением Xiaoxin Discovery

вводить

Фреймворк для глубокого обучения, на который я наткнулся, PaddlePaddle — это фреймворк для глубокого обучения с открытым исходным кодом от Baidu. По сравнению с Tensor и Pytorch, это в основном вся его экология, которая предоставляет несколько инструментов для использования, облегчая нам понимание и использование.
На этот раз я просто приношу OCR, включенный в Paddle-hub, чтобы выпустить распознавание текста, чтобы каждый мог использовать минимум кода для создания службы OCR и ощутить прелесть paddle.
В последующем я медленно познакомлюсь с Пэдлом и резюмирую набор реальных боев Пэдла.

Версии и загрузки

paddlepaddle 2.0.0rc1 ссылка для скачивания
python 3.7

среда сборки

Я система Mac, поэтому я выбираю среду Mac, и ему также очень удобно предоставлять докер.
1.png

Кроме того, вот два источника, один Baidumirror.baidu.com/pypi/simple
Один из них Цинхуаpypi.tuna.tsinghua.edu.cn/simple

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

$ pip install paddlepaddle==2.0.0rc -i https://mirror.baidu.com/pypi/simple
$ pip install paddlehub==2.0.0rc0 -i https://mirror.baidu.com/pypi/simple
$ pip install shapely -i https://pypi.tuna.tsinghua.edu.cn/simple
$ pip install pyclipper -i https://pypi.tuna.tsinghua.edu.cn/simple

Этот модуль зависит от сторонних библиотек shapely и pyclipper. Прежде чем использовать этот модуль, сначала установите shapely и pyclipper.

Загрузка предназначена для загрузки обученной модели.На официальном сайте представлены две модели, однаchinese_ocr_db_crnn_serverиchinese_ocr_db_crnn_mobile, можно временно не знать что это, можно понять, что у первого высокая точность, а у второго небольшие размеры. Мы используем высокую точность.
Давайте сначала протестируем это изображение, адрес загрузкиhttps://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c555f23d746a4fdc83118b3d44a004d5~tplv-k3u1fbpfcp-zoom-1.image, названный test_ocr.jpg после загрузки

test_ocr.jpg

$ hub run chinese_ocr_db_crnn_mobile --input_path test_ocr.jpg --visualization=True --output_dir='ocr_result'

Приведенная выше команда поясняет, что она запускается локально для обнаружения проблем в изображении и в настоящее время не ориентирована на службы.
Кроме того, команды и файлы, которые нужно запустить, на этот раз находятся в одной папке, и каждый создает их сам, то есть команды выполняются в этом файле, а картинки находятся в этой папке.
--input_path — изображение для ввода
--output_dir — это каталог вывода результата, и после этого он будет создан в текущем каталоге
--visualization=True Я тоже этого не понимаю. Все, что я знаю, это то, что его можно сохранить при использовании с вышеуказанной командой.

Сделайте снимок экрана.

2.jpg

Результат выполнения команды не интуитивно понятен? Тогда вы еще помните картинку с результатом вывода, прямо вверху.

ndarray_1611644821.802101.jpg

Лично для меня точность все равно достаточно высока. Повторите попытку с идентификатором. Адрес картыhttp://ww1.sinaimg.cn/large/8a53ebb9ly1gn147b5eq4j20n20fe76n.jpg

$ hub run chinese_ocr_db_crnn_mobile --input_path test_ocr1.jpg --visualization=True --output_dir='ocr_result'

результат

ndarray_1611645030.555805.jpg

Следующим шагом является создание сервисной службы и предоставление интерфейса.

$ hub serving start -m chinese_ocr_db_crnn_server

-m — какой модуль загрузить, то есть обучающую модель
-p установить порт, по умолчанию 8866

Начните, см. выше подсказку, вы должны обратить внимание.

3.png

Адрес протестированного интерфейса ocr:http://127.0.0.1:8866/predict/chinese_ocr_db_crnn_server, отправить запрос, заголовок запроса должен иметь "Content-type": "application/json"

На этот раз картинаhttp://ww1.sinaimg.cn/large/8a53ebb9ly1gn14laee68j20iw0ck40o.jpg

Тело запроса, в изображениях - это адрес изображения base64. Я думаю, что base64 слишком велик, поэтому я не буду вставлять его сюда и конвертировать в веб-сайт.https://tool.lu/base64image/, но помните, это не нужно преобразовывать в предыдущий логотип, а это значит, чтоdata:image/jpeg;base64,Удалите это в начале, если содержимое base64, имейте в виду, иначе будет ошибка объекта.

{
    "images": [
        ""
    ]
}

4.png

{
    "msg": "",
    "results": [
        {
            "data": [
                {
                    "confidence": "" , // 这个是识别文本结果置信度
                    "text": "", // 这个是识别到的文本
                    "text_box_position": [] // 这是文本框在原图中的像素坐标,4*2的矩阵,依次表示文本框左下、右下、右上、左上顶点的坐标 如果无识别结果则data为[]
                }
            ],
            "save_path": "" //识别结果的保存路径,如不保存图片则save_path为'',咱们这次启动服务没有配置
        }
    ],
    "status": "000"
}

Суммировать

Все здесь.Это кажется очень простым?Конечно, это попытка начального уровня, и модель обучения также официально предоставлена.На самом деле, после углубленного исследования вы можете использовать paddlepaddle для создания собственной модели обучения , модель предсказания, модель распознавания и т. д.

Ссылка на ссылку

PaddleHub распознает OCR одним щелчком мыши
Официальный сайт PaddlePaddle