mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
* 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
68 lines
6.8 KiB
Markdown
68 lines
6.8 KiB
Markdown
---
|
||
description: "Извлекайте текст из отсканированных PDF-файлов локально с помощью встроенного Tesseract или дополнительной высокоточной среды выполнения RapidOCR."
|
||
i18n_output_hash: 2fdf67eb542c
|
||
i18n_source_hash: a19ba25a1ca8
|
||
i18n_provenance: human
|
||
---
|
||
|
||
# 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`
|
||
|
||
Принимает данные multipart form с PDF-файлом и необязательным JSON-полем `settings`.
|
||
|
||
## Parameters {#parameters}
|
||
|
||
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|
||
|-----------|------|----------|---------|-------------|
|
||
| file | file | Да | - | Файл PDF (многочастный), закодированный до 512 MiB; по-прежнему действует более низкий лимит загрузки оператора |
|
||
| quality | string | Нет | Динамический | Уровень качества OCR: `fast`, `balanced` или `best`. |
|
||
| language | string | Нет | `"auto"` | Язык документа: `auto`, `en`, `de`, `fr`, `es`, `zh`, `ja`, `ko` |
|
||
| pages | string | Нет | `"all"` | Выбор страниц, например `"all"`, `"1-3"`, `"1,3,5"` |
|
||
| enhance | boolean | Нет | Зависит от уровня | Улучшите локальный контраст перед распознаванием. Fast применяет его напрямую; Сбалансированный и Лучший сохраняют вариант только в том случае, если калиброванная оценка улучшает результат. По умолчанию `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}
|
||
|
||
```bash
|
||
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", "enhance": true}'
|
||
```
|
||
|
||
## Example Response {#example-response}
|
||
|
||
Возвращает `202 Accepted`. Отслеживайте прогресс через SSE по адресу `/api/v1/jobs/{jobId}/progress`.
|
||
|
||
```json
|
||
{
|
||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||
"async": true
|
||
}
|
||
```
|
||
|
||
## Notes {#notes}
|
||
|
||
- Принимаемый входной формат: `.pdf`.
|
||
- `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, а совокупный ответ OCR UTF-8 ограничен 1 000 000 байт; задания превышения лимита завершаются неудачей, а не возвращают частичный текст.
|
||
- Для PDF, которые уже содержат выделяемый текст, рассмотрите использование более быстрого инструмента [PDF to Text](./pdf-to-text).
|