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.
6.2 KiB
description, i18n_output_hash, i18n_source_hash, i18n_provenance
| description | i18n_output_hash | i18n_source_hash | i18n_provenance |
|---|---|---|---|
| Extrahera text från bilder lokalt med inbyggd Tesseract eller den valfria RapidOCR-körtiden med hög precision. | c4e9a0811cc2 | 0d453b49db02 | human |
OCR / Textextrahering
Extrahera text från bilder utan att skicka bilden till en extern tjänst. Den inbyggda fast-nivån använder Tesseract. De valfria balanced- och best-nivåerna använder RapidOCR med stiftade PP-OCR ONNX-modeller.
::: info Kompatibilitet för koreansk OCR
Snabb OCR stöder auto, en, de, es, fr, zh och ja, men inte koreanska (ko). Koreanska kräver det exakta OCR-paketet och balanced eller best. Paketet fungerar i officiella Linux amd64- och arm64-containrar, även på NVIDIA-värdar där OCR fortsätter köras på CPU. System som inte stöds får ett uttryckligt kompatibilitetsfel och faller aldrig tyst tillbaka till fast. Koreanska med fast eller det äldre aliaset tesseract avvisas före köläggning med FEATURE_INCOMPATIBLE och fast-korean-unsupported.
:::
API-slutpunkt
POST /api/v1/tools/image/ocr
Bearbetning: OCR körs alltid asynkront. Efter validering och köläggning returnerar slutpunkten omedelbart 202 Accepted med ett jobId. Följ jobbets SSE-förloppsström till den avslutande händelsen complete eller failed; vid ett lyckat resultat innehåller result OCR-fälten.
Exakt OCR-paket: Valfri ocr-körtid (cirka 208-234 MiB att ladda ner och 409-488 MiB installerad, beroende på målet). fast kräver inte detta paket; Installationsprogrammet verifierar de exakta storlekarna bundna av det signerade indexet.
Parametrar
| Parameter | Typ | Obligatorisk | Standard | Beskrivning |
|---|---|---|---|---|
| file | file | Ja | - | Bildfil (flerdelar), upp till 512 MiB kodade och 40 megapixlar avkodade; en lägre uppladdningsgräns för operatören gäller fortfarande |
| quality | string | Inga | Dynamisk | Kvalitetsnivå: fast (Tesseract), balanced (RapidOCR med de små PP-OCRv6-modellerna), eller best (de medelstora PP-OCRv6-modellerna med högre precision med poängkalibrerade varianter) |
| language | string | Nej | "auto" |
Språktips: auto, en, de, fr, es, zh, ja, ko |
| enhance | boolean | Inga | Tierberoende | Förbättra den lokala kontrasten före igenkänning. Fast applicerar det direkt; Balanced och Best behåller varianten endast när kalibrerad poängsättning förbättrar resultatet. Standard är true för best och false för fast/balanced |
| engine | string | Inga | - | Utfasat kompatibilitetsalias. Använd quality istället. tesseract mappar till fast; det äldre paddleocr-värdet mappas till balanced men laddar inte PaddlePaddle |
När quality och engine utelämnas väljer SnapOtter den bästa tillgängliga nivån i ordningen best, balanced, fast. För koreanska väljs aldrig fast; best, sedan balanced används, annars returneras installations- eller kompatibilitetsfelet för den exakta körmiljön.
Exempelförfrågan
curl -X POST http://localhost:1349/api/v1/tools/image/ocr \
-F "file=@document.png" \
-F 'settings={"quality":"best","language":"en","enhance":true}'
Accepterat svar (202)
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"async": true
}
Förlopp och resultat (SSE)
Anslut till GET /api/v1/jobs/{jobId}/progress med det jobId som returnerades i 202-svaret (eller angivet clientJobId). Håll strömmen öppen tills den avslutande händelsen complete eller failed. En lyckad slutram innehåller OCR-utdata i 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"
}
}
Bearbetningsfel levereras i fältet error i den avslutande händelsen failed; efter köläggning returneras de inte som HTTP 422.
Anteckningar
fastär alltid tillgänglig i SnapOtter-bilder som stöds.balancedochbestkräver valfritt OCR-paket.- Inbyggd Tesseract lägger till cirka 25 MiB till den officiella bilden. Den exakta förpackningen lagras i
/data/ai, inte inbakad i bilden. - Det korrekta paketet publiceras för de officiella Linux amd64- och arm64-behållarna. Den använder medvetet ONNX Runtime:s CPU-leverantör, inklusive på NVIDIA-värdar, så det beror inte på CUDA-bibliotek eller GPU-kompatibilitet. Käll- och förbyggda bare-metal-installationer använder Fast OCR om de inte tillhandahåller sin egen kompatibla körtid.
- Ett lyckat terminalt
resultinnehåller både den extraherade texten itextoch en nedladdningsbar.txt-artefakt idownloadUrl. - SnapOtter hedrar en uttryckligen begärd nivå. Om
balancedellerbestinte är tillgänglig, returnerar API501medFEATURE_NOT_INSTALLEDellerFEATURE_INCOMPATIBLE; den nedgraderar aldrig förfrågan i tysthet till en annan nivå. - Ett framgångsrikt tomt resultat förblir ett tomt resultat. Körtidsfel returnerar ett fel istället för att försöka igen med en motor av lägre kvalitet.
- Ett lyckat terminalt
resultrapporterar båderequestedQualityochactualQuality, plus motor, enhet, leverantör, körtid och modellversioner, och eventuella varningar. - Stöder HEIC/HEIF-, RAW-, TGA-, PSD-, EXR- och HDR-indataformat via automatisk avkodning.
- Överdimensionerade kodade ingångar returnerar
413. Bilder över 40 megapixlar och OCR-svar över sina gränsade utdatagränser avvisas istället för att delvis bearbetas.