{"id":26470079,"url":"https://github.com/ulianadzhumok/multi-ocr-server","last_synced_at":"2025-03-19T17:10:18.782Z","repository":{"id":272473458,"uuid":"916698466","full_name":"UlianaDzhumok/multi-ocr-server","owner":"UlianaDzhumok","description":"OCR web-server on FastAPI with OCR models: EasyOCR, TesseractOCR, PaddleOCR и SuryaOCR","archived":false,"fork":false,"pushed_at":"2025-02-27T15:22:48.000Z","size":1114,"stargazers_count":7,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-27T20:27:12.331Z","etag":null,"topics":["easyocr","fastapi","ocr","paddleocr","pytorch","surya-ocr","tesseract-ocr","uvicorn"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/UlianaDzhumok.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-14T15:48:52.000Z","updated_at":"2025-02-27T15:22:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"fa7bcfb2-8025-4ef3-af65-52c2ff4de83a","html_url":"https://github.com/UlianaDzhumok/multi-ocr-server","commit_stats":null,"previous_names":["ulianadzhumok/triple-ocr-server","ulianadzhumok/multi-ocr-server"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UlianaDzhumok%2Fmulti-ocr-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UlianaDzhumok%2Fmulti-ocr-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UlianaDzhumok%2Fmulti-ocr-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UlianaDzhumok%2Fmulti-ocr-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/UlianaDzhumok","download_url":"https://codeload.github.com/UlianaDzhumok/multi-ocr-server/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244470246,"owners_count":20457909,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["easyocr","fastapi","ocr","paddleocr","pytorch","surya-ocr","tesseract-ocr","uvicorn"],"created_at":"2025-03-19T17:10:18.080Z","updated_at":"2025-03-19T17:10:18.775Z","avatar_url":"https://github.com/UlianaDzhumok.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OCR сервер с FastAPI (CPU и GPU)\n\nЭтот проект предоставляет API для распознавания текста с изображений с использованием различных OCR-движков: **EasyOCR**, **Tesseract**, **PaddleOCR**, **SuryaOCR**. Вы можете выбрать нужный движок через веб-интерфейс или API.\n\n![Иллюстрация к проекту](https://github.com/UlianaDzhumok/triple-ocr-server/blob/main/example.jpg)\n\n## Структура проекта\n\n  ```csharp\n  triple-ocr-server/\n  ├── app/\n  │   ├── templates/\n  │   │   └── index.html      # Шаблон страницы для загрузки изображения\n  │   ├── static/\n  │   │   └── style.css       # Стиль для страницы\n  │   ├── main.py             # Основной код сервера FastAPI\n  │   ├── requirements.txt    # Список зависимостей\n  ├── Dockerfile              # Dockerfile для создания Docker образа\n  ├── environment.yml         # Список зависимостей в виде готового окружения Anaconda\n  └── README.md               # Этот файл\n```\n## Установка зависимостей\n\n1. Клонируйте репозиторий:\n```bash\ngit clone https://github.com/UlianaDzhumok/multi-ocr-server\ncd multi-ocr-server\n```\n2. Установите зависимости:\n```bash\npip install -r requirements.txt\n```\n\nВ requirements.txt указаны все необходимые библиотеки для работы с сервером.\n\nЕсли Вы используете Anaconda можно восстановить окружение из файла:\n\n\n```bash\nconda env create -f environment.yml\n```\nили\n```bash\nconda create --name \u003cимя_окружения\u003e --file environment.yml\n```\nЭта команда создаст новое окружение с теми же зависимостями, что были в сохраненном файле.\n\n## Запуск локально через Uvicorn\nЕсли вы хотите запустить сервер локально, выполните следующие шаги:\n\n1. Убедитесь, что у вас установлен Uvicorn:\n```bash\npip install uvicorn\n```\n2. Запустите сервер:\n```bash\nuvicorn main:app --host 0.0.0.0 --port 8000\n```\nСервер будет доступен по адресу http://0.0.0.0:8000.\n\n3. Откройте в браузере страницу для загрузки изображения и выбора движка OCR:\n\n```arduino\nhttp://0.0.0.0:8000\n```\n## Запуск через Docker\n### Создание Docker образа\n1. Сначала создайте Docker образ выполнив команду из директории где находится Dockerfile:\n```bash\ndocker build -t ocr-server .\n```\n2. Запустите контейнер (с использованием GPU с указанием HOST и PORT для развертки):\n```bash\ndocker run --gpus all -e USE_GPU=true -e HOST=127.0.0.1 -e PORT=9000 -p 9000:9000 ocr-server\n```\nТеперь сервер будет доступен по адресу http://127.0.0.1:9000.\n\n### Запуск из уже готового Docker образа\nЕсли у вас уже есть готовый Docker образ (например из пакетов этого проекта: [multi-ocr-server](https://github.com/UlianaDzhumok?tab=packages\u0026repo_name=multi-ocr-server)), вы можете просто запустить его с использованием GPU:\n```bash\ndocker run --gpus all -e USE_GPU=true multi-ocr-server p 8000:8000\n```\nИли только для CPU:\n```bash\ndocker run -e USE_GPU=false multi-ocr-server -p 8000:8000\n```\n## Пример работы с API\n### Запрос на распознавание текста\nС помощью метода POST вы можете отправить изображение и выбрать OCR-движок для обработки. \nПоддерживаемые движки: easyocr, tesseract, paddleocr, suryaocr.\n\nПример запроса через curl:\n```bash\ncurl -X POST http://localhost:8000/GetOcr \\\n-H \"Content-Type: application/json\" \\\n-H \"Accept: application/json\" \\\n-d '{\n    \"file\": \"path/to/image.jpg\",\n    \"engine\": \"easyocr\"\n}'\n```\nОтвет будет в формате JSON:\n\n```json\n{\n  \"result\": {\n    \"engine\": \"easyocr\",\n    \"execution_time\": \"59.95\",\n    \"text\": \"Распознанный текст с изображением с использованием EasyOCR\"\n  }\n}\n```\n\n### Получение списка доступных движков\nС помощью метода GET вы можете получить список доступных OCR-движков.\n\nПример запроса через curl:\n```bash\ncurl -X GET http://localhost:8000/GetOcrList\n```\nОтвет будет в формате JSON:\n\n```json\n{\n  \"available_engines\": [\"easyocr\", \"tesseract\", \"paddleocr\", \"suryaocr\"]\n}\n```\n\n### Тестирование API с использованием `test_API.py`\nВы можете протестировать API, используя скрипт `test_API.py`. \n\n#### Настройка:\n1. Убедитесь, что файл `test_image.jpg` находится в той же папке, что и `test_API.py`.\n2. Убедитесь, что сервер API запущен локально на `http://0.0.0.0:8000`.\n\n#### Запуск теста:\n```bash\npython test_API.py\n```\n\nСкрипт выполняет следующие действия:\n1. Отправляет запрос к `/GetOcrList` для получения списка доступных движков OCR.\n2. Тестирует каждый движок (`easyocr`, `tesseract`, `paddleocr`, `suryaocr`) с изображением `test_image.jpg`.\n\nПример вывода:\n```\nAvailable OCR Engines: ['easyocr', 'tesseract', 'paddleocr', 'suryaocr']\n\nTesting OCR with easyocr engine:\nEngine: easyocr\nExecution Time: 59.95 seconds\nRecognized Text:\nРаспознанный текст с изображением с использованием EasyOCR\n\nTesting OCR with tesseract engine:\nEngine: tesseract\nExecution Time: 3.16 seconds\nRecognized Text:\nРаспознанный текст с изображением с использованием Tesseract\n\nTesting OCR with paddleocr engine:\nEngine: paddleocr\nExecution Time: 1.00 seconds\nRecognized Text:\nРаспознанный текст с изображением с использованием PaddleOCR\n\nTesting OCR with suryaocr engine:\nEngine: suryaocr\nExecution Time: 1.00 seconds\nRecognized Text:\nРаспознанный текст с изображением с использованием SuryaOCR\n```\n\n### Примечание\nУбедитесь, что файл изображения правильно закодирован в Base64 перед отправкой в API.\n\n### Доступ к веб-интерфейсу\nКроме того, для удобства предоставляется веб-интерфейс для загрузки изображений и выбора OCR-движка. Перейдите по следующему адресу в браузере:\n\n```arduino\nhttp://0.0.0.0:8000\n```\nВы можете выбрать движок OCR, загрузить изображение и получить результат распознавания текста.\n\n## Список зависимостей\nПроект использует следующие библиотеки:\n\n- FastAPI — для создания веб-сервера и API.\n- Uvicorn — ASGI сервер для FastAPI.\n- OpenCV — для обработки изображений.\n- [EasyOCR](https://github.com/JaidedAI/EasyOCR) — движок OCR для распознавания текста.\n- [Tesseract](https://github.com/tesseract-ocr/tesseract) — классический движок OCR.\n- Pytesseract — Python интерфейс для Tesseract.\n- [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR) — ещё один мощный движок OCR.\n- [SuryaOCR](https://github.com/VikParuchuri/surya) - движок OCR для 90+ языков.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fulianadzhumok%2Fmulti-ocr-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fulianadzhumok%2Fmulti-ocr-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fulianadzhumok%2Fmulti-ocr-server/lists"}