Этот проект предоставляет API для распознавания текста с изображений с использованием различных OCR-движков: EasyOCR, Tesseract, PaddleOCR, SuryaOCR. Вы можете выбрать нужный движок через веб-интерфейс или API.
triple-ocr-server/
├── app/
│ ├── templates/
│ │ └── index.html # Шаблон страницы для загрузки изображения
│ ├── static/
│ │ └── style.css # Стиль для страницы
│ ├── main.py # Основной код сервера FastAPI
│ ├── requirements.txt # Список зависимостей
├── Dockerfile # Dockerfile для создания Docker образа
└── README.md # Этот файл
- Клонируйте репозиторий:
git clone https://github.com/UlianaDzhumok/multi-ocr-server
cd multi-ocr-server
- Установите зависимости:
pip install -r requirements.txt
В requirements.txt указаны все необходимые библиотеки для работы с сервером.
Если вы хотите запустить сервер локально, выполните следующие шаги:
- Убедитесь, что у вас установлен Uvicorn:
pip install uvicorn
- Запустите сервер:
uvicorn main:app --host 0.0.0.0 --port 8000
Сервер будет доступен по адресу http://0.0.0.0:8000.
- Откройте в браузере страницу для загрузки изображения и выбора движка OCR:
http://0.0.0.0:8000
- Сначала создайте Docker образ выполнив команду из директории где находится Dockerfile:
docker build -t ocr-server .
- Запустите контейнер (с использованием GPU с указанием HOST и PORT для развертки):
docker run --gpus all -e USE_GPU=true -e HOST=127.0.0.1 -e PORT=9000 -p 9000:9000 ocr-server
Теперь сервер будет доступен по адресу http://127.0.0.1:9000.
Если у вас уже есть готовый Docker образ (например из пакетов этого проекта: multi-ocr-server), вы можете просто запустить его с использованием GPU:
docker run --gpus all -e USE_GPU=true multi-ocr-server p 8000:8000
Или только для CPU:
docker run -e USE_GPU=false multi-ocr-server -p 8000:8000
С помощью метода POST вы можете отправить изображение и выбрать OCR-движок для обработки. Поддерживаемые движки: easyocr, tesseract, paddleocr, suryaocr.
Пример запроса через curl:
curl -X POST http://localhost:8000/GetOcr \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"file": "path/to/image.jpg",
"engine": "easyocr"
}'
Ответ будет в формате JSON:
{
"result": {
"engine": "easyocr",
"execution_time": "59.95",
"text": "Распознанный текст с изображением с использованием EasyOCR"
}
}
С помощью метода GET вы можете получить список доступных OCR-движков.
Пример запроса через curl:
curl -X GET http://localhost:8000/GetOcrList
Ответ будет в формате JSON:
{
"available_engines": ["easyocr", "tesseract", "paddleocr", "suryaocr"]
}
Вы можете протестировать API, используя скрипт test_API.py
.
- Убедитесь, что файл
test_image.jpg
находится в той же папке, что иtest_API.py
. - Убедитесь, что сервер API запущен локально на
http://0.0.0.0:8000
.
python test_API.py
Скрипт выполняет следующие действия:
- Отправляет запрос к
/GetOcrList
для получения списка доступных движков OCR. - Тестирует каждый движок (
easyocr
,tesseract
,paddleocr
,suryaocr
) с изображениемtest_image.jpg
.
Пример вывода:
Available OCR Engines: ['easyocr', 'tesseract', 'paddleocr', 'suryaocr']
Testing OCR with easyocr engine:
Engine: easyocr
Execution Time: 59.95 seconds
Recognized Text:
Распознанный текст с изображением с использованием EasyOCR
Testing OCR with tesseract engine:
Engine: tesseract
Execution Time: 3.16 seconds
Recognized Text:
Распознанный текст с изображением с использованием Tesseract
Testing OCR with paddleocr engine:
Engine: paddleocr
Execution Time: 1.00 seconds
Recognized Text:
Распознанный текст с изображением с использованием PaddleOCR
Testing OCR with suryaocr engine:
Engine: suryaocr
Execution Time: 1.00 seconds
Recognized Text:
Распознанный текст с изображением с использованием SuryaOCR
Убедитесь, что файл изображения правильно закодирован в Base64 перед отправкой в API.
Кроме того, для удобства предоставляется веб-интерфейс для загрузки изображений и выбора OCR-движка. Перейдите по следующему адресу в браузере:
http://0.0.0.0:8000
Вы можете выбрать движок OCR, загрузить изображение и получить результат распознавания текста.
Проект использует следующие библиотеки:
- FastAPI — для создания веб-сервера и API.
- Uvicorn — ASGI сервер для FastAPI.
- OpenCV — для обработки изображений.
- EasyOCR — движок OCR для распознавания текста.
- Tesseract — классический движок OCR.
- Pytesseract — Python интерфейс для Tesseract.
- PaddleOCR — ещё один мощный движок OCR.
- SuryaOCR - движок OCR для 90+ языков.