--- description: "Витягуйте текст із зображень локально за допомогою вбудованого Tesseract або додаткового високоточного середовища виконання RapidOCR." i18n_output_hash: e4c4f8150634 i18n_source_hash: 0d453b49db02 i18n_provenance: human --- # OCR / Витяг тексту {#ocr-text-extraction} Витягніть текст із зображень, не надсилаючи зображення до зовнішньої служби. Вбудований рівень `fast` використовує Tesseract. Додаткові рівні `balanced` і `best` використовують RapidOCR із закріпленими моделями PP-OCR ONNX. ::: info Сумісність OCR для корейської мови Швидкий OCR підтримує `auto`, `en`, `de`, `es`, `fr`, `zh` і `ja`, але не корейську мову (`ko`). Для корейської потрібен пакет точного OCR і рівень `balanced` або `best`. Пакет працює в офіційних контейнерах Linux amd64 і arm64, зокрема на вузлах NVIDIA, де OCR і далі виконується на CPU. Непідтримувані системи отримують явну помилку сумісності без прихованого переходу на `fast`. Корейська з `fast` або застарілим псевдонімом `tesseract` відхиляється до постановки в чергу з `FEATURE_INCOMPATIBLE` і `fast-korean-unsupported`. ::: ## Кінцева точка API {#api-endpoint} `POST /api/v1/tools/image/ocr` **Обробка:** OCR завжди виконується асинхронно. Після перевірки та постановки в чергу кінцева точка одразу повертає `202 Accepted` з `jobId`. Відстежуйте потік виконання завдання SSE до кінцевої події `complete` або `failed`; у разі успіху її `result` містить поля OCR. **Точний пакет OCR:** Додатковий час виконання `ocr` (приблизно 208-234 MiB для завантаження та 409-488 MiB для встановлення, залежно від цілі). Для `fast` цей пакет не потрібен; інсталятор перевіряє точні розміри, обмежені підписаним індексом. ## Параметри {#parameters} | Параметр | Тип | Обов'язковий | За замовчуванням | Опис | |-----------|------|----------|---------|-------------| | file | file | так | - | Файл зображення (багатокомпонентний), до 512 MiB закодованих і 40 мегапікселів декодованих; все ще застосовується нижчий ліміт завантаження оператора | | quality | string | немає | Динамічний | Рівень якості: `fast` (Tesseract), `balanced` (RapidOCR з малими моделями PP-OCRv6) або `best` (середні моделі PP-OCRv6 з вищою точністю з каліброваним варіантом балів) | | language | string | Ні | `"auto"` | Підказка мови: `auto`, `en`, `de`, `fr`, `es`, `zh`, `ja`, `ko` | | enhance | boolean | немає | Залежно від рівня | Покращте локальний контраст перед розпізнаванням. Fast застосовує його безпосередньо; Balanced і Best зберігають варіант лише тоді, коли відкалібрована оцінка покращує результат. За замовчуванням `true` для `best` і `false` для `fast`/`balanced` | | engine | string | немає | - | Застарілий псевдонім сумісності. Натомість використовуйте `quality`. `tesseract` відображається на `fast`; застаріле значення `paddleocr` відображається на `balanced`, але не завантажує PaddlePaddle | Якщо `quality` і `engine` не задано, SnapOtter вибирає найкращий доступний рівень у порядку `best`, `balanced`, `fast`. Для корейської мови `fast` ніколи не вибирається: використовується `best`, потім `balanced`, або повертається помилка встановлення чи сумісності точного середовища виконання. ## Приклад запиту {#example-request} ```bash curl -X POST http://localhost:1349/api/v1/tools/image/ocr \ -F "file=@document.png" \ -F 'settings={"quality":"best","language":"en","enhance":true}' ``` ## Прийнята відповідь (202) {#accepted-response-202} ```json { "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "async": true } ``` ### Хід виконання та результат (SSE) {#progress-sse-optional} Підключіться до `GET /api/v1/jobs/{jobId}/progress`, використовуючи `jobId` із відповіді `202` (або наданий `clientJobId`). Тримайте потік відкритим до кінцевої події `complete` або `failed`. Успішний кінцевий кадр містить результат OCR у полі `result`: ```json { "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "type": "single", "phase": "complete", "stage": "complete", "percent": 100, "result": { "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document_ocr.txt", "originalSize": 12345, "processedSize": 47, "text": "Extracted text content from the image...", "engine": "rapidocr-onnx", "requestedQuality": "best", "actualQuality": "best", "device": "cpu", "provider": "CPUExecutionProvider", "degraded": false, "warnings": [], "runtimeVersion": "2.1.0", "modelVersion": "PP-OCRv6-best-v1-medium" } } ``` Помилки обробки надходять у полі `error` кінцевої події `failed`; після постановки в чергу вони не повертаються як HTTP `422`. ## Примітки {#notes} - `fast` завжди доступний у підтримуваних образах SnapOtter. Для `balanced` і `best` потрібен додатковий точний пакет OCR. - Вбудований Tesseract додає близько 25 MiB до офіційного зображення. Точний пакет зберігається в `/data/ai`, а не запікається в зображенні. - Акуратний пакет видається для офіційного Linux amd64 і arm64 контейнери. Він навмисно використовує постачальника CPU ONNX Runtime, у тому числі на хостах NVIDIA, тому не залежить від бібліотек CUDA або сумісності GPU. Вихідні та попередньо зібрані інсталяції bare-metal використовують Fast OCR, якщо вони не надають власне сумісне середовище виконання. - Успішний кінцевий `result` містить як витягнутий текст у `text`, так і доступний для завантаження артефакт `.txt` у `downloadUrl`. - SnapOtter вшановує явно запитаний рівень. Якщо `balanced` або `best` недоступні, API повертає `501` із `FEATURE_NOT_INSTALLED` або `FEATURE_INCOMPATIBLE`; він ніколи мовчки не переносить запит на інший рівень. - Вдалий порожній результат залишається порожнім результатом. Помилки виконання повертають помилку замість повторної спроби з механізмом нижчої якості. - Успішний кінцевий `result` повідомляє як `requestedQuality`, так і `actualQuality`, а також механізм, пристрій, постачальника, середовище виконання та версії моделі, а також будь-які попередження. - Підтримує вхідні формати HEIC/HEIF, RAW, TGA, PSD, EXR та HDR через автоматичне декодування. — Надмірні закодовані входи повертають `413`. Зображення розміром понад 40 мегапікселів і відповіді OCR, що перевищують обмежені вихідні межі, відхиляються замість часткової обробки.