Files
SnapOtter/apps/docs/de/tools/image/ocr.md
T
SnapOtterandGitHub 5f21588f6c chore: prepare the 2.2.0 release (#660)
Bumps every version surface to 2.2.0, fixes a latent version-coupling bug in the
OCR runtime tests, and stops an absent GPU runner from silently stalling a
release.

Version surfaces: scripts/sync-version.sh covers the 11 workspaces, APP_VERSION,
and the docs release commands across all locales. Root package.json plus the
three surfaces the script never reaches are done by hand: the DOCKERHUB.md banner
and tag table, the docker-tags.md pinning table in 21 locales, and the example
runtimeVersion in tools/image/ocr.md in 21 locales. The release-notes archive step
is deliberately not pre-run, so the notes text stays editable until the release.

Latent bug: runtime-state rejects any runtime whose compatibility.snapotterVersion
is not exactly APP_VERSION, and five fixtures pinned the literal 2.1.0. Since
semantic-release rewrites APP_VERSION on every release, the first PR after any
bump would have gone red for a reason nobody would trace to the release. The
fixtures now derive from APP_VERSION.

GPU runner: sign-ocr-index needs verify-ocr-nvidia on self-hosted hardware, and
the gated manifest job needs ai-bundles, so a missing runner queued instead of
failing and produced no image tags. preflight-gpu-runner claims the same labels
with no dependencies, so it is scheduled first and validates the GPU before the
90-minute build. An API preflight is impossible because listing self-hosted
runners needs Administration:read, which GITHUB_TOKEN cannot hold, so RELEASE.md
carries the maintainer-side check.
2026-07-27 22:09:31 +08:00

6.6 KiB
Raw Blame History

description, i18n_output_hash, i18n_source_hash, i18n_provenance
description i18n_output_hash i18n_source_hash i18n_provenance
Extrahieren Sie Text lokal aus Bildern mit dem integrierten Tesseract oder der optionalen hochpräzisen RapidOCR-Laufzeitumgebung. 7455d3e3f8ff 0d453b49db02 human

OCR / Textextraktion

Extrahieren Sie Text aus Bildern, ohne das Bild an einen externen Dienst zu senden. Die integrierte fast-Stufe verwendet Tesseract. Die optionalen Ebenen balanced und best verwenden RapidOCR mit angehefteten PP-OCR ONNX-Modellen.

::: info Kompatibilität für koreanische OCR Fast OCR unterstützt auto, en, de, es, fr, zh und ja, aber kein Koreanisch (ko). Koreanisch benötigt das genaue OCR-Paket und balanced oder best. Das Paket läuft in offiziellen Linux-amd64- und arm64-Containern, auch auf NVIDIA-Hosts weiterhin auf der CPU. Nicht unterstützte Systeme erhalten einen eindeutigen Kompatibilitätsfehler und keinen stillen Rückfall auf fast. Koreanisch mit fast oder dem alten Alias tesseract wird vor dem Einreihen mit FEATURE_INCOMPATIBLE und fast-korean-unsupported abgelehnt. :::

API-Endpunkt

POST /api/v1/tools/image/ocr

Verarbeitung: OCR wird immer asynchron ausgeführt. Nach Validierung und Einreihung gibt der Endpunkt sofort 202 Accepted mit einer jobId zurück. Verfolgen Sie den SSE-Fortschrittsstrom des Jobs bis zum abschließenden Ereignis complete oder failed; bei Erfolg enthält dessen result die OCR-Felder.

Genaues OCR-Paket: Optionale ocr-Laufzeit (ca. 208234 MiB zum Herunterladen und 409488 MiB installiert, je nach Ziel). Für fast ist dieses Paket nicht erforderlich. Das Installationsprogramm überprüft die genauen Größen, die durch den signierten Index gebunden sind.

Parameter

Parameter Typ Erforderlich Standard Beschreibung
file file Ja - Bilddatei (mehrteilig), bis zu 512 MiB kodiert und 40 Megapixel dekodiert; Es gilt weiterhin ein niedrigeres Upload-Limit des Betreibers
quality string NEIN Dynamisch Qualitätsstufe: fast (Tesseract), balanced (RapidOCR mit den kleinen PP-OCRv6-Modellen) oder best (die höhergenauen mittleren PP-OCRv6-Modelle mit kalibrierter Variantenbewertung)
language string Nein "auto" Sprachhinweis: auto, en, de, fr, es, zh, ja, ko
enhance boolean NEIN Tierabhängig Verbessern Sie den lokalen Kontrast vor der Erkennung. Fast wendet es direkt an; „Balanced“ und „Best“ behalten die Variante nur dann bei, wenn die kalibrierte Bewertung das Ergebnis verbessert. Standardmäßig ist true für best und false für fast/balanced
engine string NEIN - Veralteter Kompatibilitätsalias. Verwenden Sie stattdessen quality. tesseract wird auf fast abgebildet; Der alte Wert paddleocr wird balanced zugeordnet, lädt PaddlePaddle jedoch nicht

Wenn quality und engine fehlen, wählt SnapOtter die höchste verfügbare Stufe in dieser Reihenfolge: best, balanced, fast. Für Koreanisch wird fast nie gewählt; es wird best, dann balanced verwendet oder ein Installations- bzw. Kompatibilitätsfehler der genauen Laufzeit zurückgegeben.

Beispielanfrage

curl -X POST http://localhost:1349/api/v1/tools/image/ocr \
  -F "file=@document.png" \
  -F 'settings={"quality":"best","language":"en","enhance":true}'

Angenommene Antwort (202)

{
  "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "async": true
}

Fortschritt und Ergebnis (SSE)

Verbinden Sie sich mit GET /api/v1/jobs/{jobId}/progress und verwenden Sie die jobId aus der 202-Antwort (oder die übergebene clientJobId). Halten Sie den Stream bis zum abschließenden Ereignis complete oder failed offen. Ein erfolgreiches Terminal-Frame enthält die OCR-Ausgabe in result:

{
  "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.2.0",
    "modelVersion": "PP-OCRv6-best-v1-medium"
  }
}

Verarbeitungsfehler werden im Feld error des abschließenden Ereignisses failed übertragen; nach dem Einreihen werden sie nicht als HTTP 422 zurückgegeben.

Hinweise

  • fast ist immer in unterstützten SnapOtter-Images verfügbar. balanced und best erfordern das optionale genaue OCR-Paket.
  • Das integrierte Tesseract fügt dem offiziellen Bild etwa 25 MiB hinzu. Das genaue Paket wird in /data/ai gespeichert und nicht in das Bild eingebrannt.
  • Das genaue Paket wird für die offiziellen Container Linux amd64 und arm64 veröffentlicht. Es verwendet bewusst den CPU-Anbieter von ONNX Runtime, auch auf NVIDIA-Hosts, sodass es nicht auf CUDA-Bibliotheken oder GPU-Kompatibilität angewiesen ist. Quelle und vorgefertigt bare-metal Installationen verwenden Fast OCR es sei denn, sie stellen ihre eigene kompatible Laufzeit bereit.
  • Das erfolgreiche Terminal-result enthält sowohl den extrahierten Text in text als auch ein herunterladbares .txt-Artefakt in downloadUrl. SnapOtter berücksichtigt eine explizit angeforderte Stufe. Wenn balanced oder best nicht verfügbar ist, der API gibt 501 mit FEATURE_NOT_INSTALLED oder FEATURE_INCOMPATIBLE zurück; Die Anfrage wird niemals stillschweigend auf eine andere Ebene herabgestuft.
  • Ein erfolgreiches leeres Ergebnis bleibt ein leeres Ergebnis. Laufzeitfehler geben einen Fehler zurück, anstatt es erneut mit einer Engine mit geringerer Qualität zu versuchen. Das erfolgreiche Terminal-result meldet sowohl requestedQuality als auch actualQuality sowie die Engine-, Geräte-, Anbieter-, Laufzeit- und Modellversionen sowie etwaige Warnungen.
  • Unterstützt die Eingabeformate HEIC/HEIF, RAW, TGA, PSD, EXR und HDR durch automatische Dekodierung. Übergroße codierte Eingaben geben 413 zurück. Bilder über 40 Megapixel und OCR-Antworten, die ihre begrenzten Ausgabegrenzen überschreiten, werden abgelehnt, anstatt teilweise verarbeitet zu werden.