mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
fix: make OCR portable and reliable across AMD64 and ARM64 (#519)
* fix: make OCR portable and reliable * fix: harden OCR installation portability * fix: pin OCR partials across downloads * fix: make OCR execution reliably asynchronous * fix: harden OCR portability and docs routes * fix: preserve decoder and docs safeguards
This commit is contained in:
@@ -1,14 +1,20 @@
|
||||
---
|
||||
description: "Витягання тексту з документів PDF за допомогою OCR на основі ШІ."
|
||||
i18n_source_hash: 1431fcba180b
|
||||
description: "Витягуйте текст зі сканованих PDF-файлів локально за допомогою вбудованого Tesseract або додаткового високоточного середовища виконання RapidOCR."
|
||||
i18n_output_hash: 8bee2f949f3f
|
||||
i18n_source_hash: a19ba25a1ca8
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: b0bc3d72aed6
|
||||
---
|
||||
|
||||
# PDF OCR {#pdf-ocr}
|
||||
|
||||
Витягайте текст з документів PDF за допомогою оптичного розпізнавання символів на основі ШІ. Підтримує кілька рівнів якості та мов. Потребує встановлення набору функцій OCR.
|
||||
Витягуйте текст зі сканованих документів PDF сторінка за сторінкою, не надсилаючи PDF до зовнішньої служби. Вбудований рівень `fast` використовує Tesseract. Додаткові рівні `balanced` і `best` використовують RapidOCR із закріпленими моделями PP-OCR ONNX.
|
||||
|
||||
|
||||
<!-- korean-ocr-contract:start -->
|
||||
::: 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`.
|
||||
:::
|
||||
<!-- korean-ocr-contract:end -->
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/ocr-pdf`
|
||||
@@ -19,9 +25,14 @@ i18n_output_hash: b0bc3d72aed6
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| quality | string | No | `"balanced"` | Рівень якості OCR: `fast`, `balanced`, `best` |
|
||||
| file | file | так | - | Файл PDF (багатокомпонентний), закодований до 512 MiB; все ще застосовується нижчий ліміт завантаження оператора |
|
||||
| quality | string | немає | Динамічний | Рівень якості OCR: `fast`, `balanced` або `best` |
|
||||
| language | string | No | `"auto"` | Мова документа: `auto`, `en`, `de`, `fr`, `es`, `zh`, `ja`, `ko` |
|
||||
| pages | string | No | `"all"` | Вибір сторінок, наприклад `"all"`, `"1-3"`, `"1,3,5"` |
|
||||
| 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 {#example-request}
|
||||
|
||||
@@ -29,7 +40,7 @@ i18n_output_hash: b0bc3d72aed6
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/ocr-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@scanned.pdf" \
|
||||
-F 'settings={"quality": "best", "language": "en", "pages": "1-5"}'
|
||||
-F 'settings={"quality": "best", "language": "en", "pages": "1-5", "enhance": true}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
@@ -46,8 +57,11 @@ curl -X POST http://localhost:1349/api/v1/tools/pdf/ocr-pdf \
|
||||
## Notes {#notes}
|
||||
|
||||
- Прийнятний формат вхідних даних: `.pdf`.
|
||||
- Це інструмент на основі ШІ, який потребує встановлення **набору функцій OCR**. Якщо набір не встановлено, API повертає `501 Not Implemented`.
|
||||
- Рівень якості `fast` використовує легшу модель для швидшого опрацювання; `best` використовує точнішу модель за рахунок швидкості.
|
||||
- Налаштування мови `auto` намагається визначити мову документа автоматично.
|
||||
- `fast` вбудований і додає близько 25 MiB до офіційного образу. Для `balanced` і `best` потрібен додатковий точний пакет OCR (приблизно 208-234 MiB для завантаження та 409-488 MiB для встановлення, залежно від цілі).
|
||||
- Точний пакет підтримує Linux amd64 і arm64 і використовує ONNX Runtime на CPU, в тому числі на хостах NVIDIA.
|
||||
- Явно запитаний рівень ніколи мовчки не знижується. Якщо `balanced` або `best` недоступні, API повертає `501` із `FEATURE_NOT_INSTALLED` або `FEATURE_INCOMPATIBLE`.
|
||||
- Сторінки PDF растеризуються у високій роздільній здатності перед OCR. `best` запускає високоточні моделі PP-OCRv6 із середньою точністю та оцінює орієнтацію та варіанти покращення, покращуючи розпізнавання за рахунок швидкості.
|
||||
- Налаштування мови `auto` дозволяє розпізнавати підтримуваний набір сценаріїв; явна підказка може покращити результати для відомої мови документа.
|
||||
- Ви можете націлюватися на конкретні сторінки за допомогою діапазонів (`"1-3"`), списків через кому (`"1,3,5"`) або `"all"` для кожної сторінки.
|
||||
- Запит може обробити не більше 50 сторінок. Обсяг растеризованих скретч-даних – 512 MiB, а сукупна відповідь UTF-8 OCR – 1 000 000 байт; надліміт завдань не виконується, а не повертає частковий текст.
|
||||
- Для PDF, які вже містять текст із можливістю виділення, розгляньте використання швидшого інструмента [PDF to Text](./pdf-to-text).
|
||||
|
||||
Reference in New Issue
Block a user