Files
SnapOtter/apps/docs/ru/tools/pdf/ocr-pdf.md
T
SnapOtterandGitHub 991c981529 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
2026-07-15 03:34:24 +08:00

68 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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).