OCRmyPDF als API
Senden Sie ein gescanntes PDF oder Bild und erhalten Sie es als durchsuchbares PDF/A zurück. OCRmyPDF und Tesseract, gehostet, hinter einem API-Schlüssel.
Zuletzt aktualisiert
| Preis | 2 Credits pro Seite. Ein Bild zählt als eine Seite. |
|---|---|
| Dateien | PDF, PNG oder JPEG, bis 25 MB und 200 Seiten |
| Sprachen | Englisch, Deutsch, Spanisch und Französisch |
| Ausgabe | Standardmäßig PDF/A-2b, oder ein normales PDF |
| Zeitlimit | 15 Minuten pro Job |
| Ergebnisse | 7 Tage nach dem Einreichen gespeichert |
OCRmyPDF ergänzt gescannte PDFs und Bilder um eine Textebene. Die Seiten sehen gleich aus, aber Sie können ihren Text durchsuchen, markieren und kopieren. Tesseract erkennt den Text.
Sie senden eine Datei an die Warteschlange und erhalten eine Job-ID zurück. Ist der Job erfolgreich, laden Sie das durchsuchbare PDF herunter. Die Ausgabe ist PDF/A-2b für die Langzeitarchivierung, es sei denn, Sie fordern ein normales PDF an.
Preis und Limits
Ein Job kostet 2 Credits pro Seite, und ein Bild zählt als eine Seite. Die Credits werden beim Einreichen des Jobs abgebucht. Schlägt der Job fehl, werden sie erstattet.
Eine Datei darf bis zu 25 MB und 200 Seiten haben. Ein Job wird nach 15 Minuten abgebrochen. Das Ergebnis wird 7 Tage nach dem Einreichen aufbewahrt und dann gelöscht. Die hochgeladene Datei wird gelöscht, sobald der Job beendet ist. Tarife und Credit-Kontingente stehen auf der Preisseite.
Selbst gehostet oder gehostet
Um OCRmyPDF selbst zu betreiben, installieren Sie es mit Tesseract und einem Sprachpaket pro Sprache. Sie halten beides aktuell und geben jedem Job ein Zeit- und Speicherlimit. Ein langer Scan kann mehrere GB Arbeitsspeicher belegen.
Gehostet senden Sie die Datei mit einem API-Schlüssel. Derselbe Schlüssel und dasselbe Credit-Guthaben gelten für die anderen Dokument-Engines dieser Website.
Schnellstart mit curl
Einen Scan einreichen. Der Teil type= setzt den Content-Type der Datei:
curl -H "X-API-Key: $KEY" \
-F "file=@scan.pdf;type=application/pdf" \
-F language=deu -F rotate_pages=true \
https://api.pagespool.com/v1/ocrmypdf/jobs
Die Antwort nennt den Job und seinen Preis:
{"job_id": "3f2a…", "status": "queued", "pages": 3, "credits": 6, "poll_url": "/v1/jobs/3f2a…", "result_url": "/v1/ocrmypdf/jobs/3f2a…/result"}
Fragen Sie den Job ab, bis status succeeded oder failed ist:
curl -H "X-API-Key: $KEY" https://api.pagespool.com/v1/jobs/JOB_ID
Laden Sie dann das durchsuchbare PDF herunter:
curl -H "X-API-Key: $KEY" -o scan-ocr.pdf https://api.pagespool.com/v1/ocrmypdf/jobs/JOB_ID/result
Abfragen und Herunterladen sind kostenlos.
Schnellstart mit Python
import time
import httpx
API = "https://api.pagespool.com"
headers = {"X-API-Key": "YOUR_KEY"}
with open("scan.pdf", "rb") as fh:
resp = httpx.post(
f"{API}/v1/ocrmypdf/jobs",
headers=headers,
files={"file": ("scan.pdf", fh, "application/pdf")},
data={"language": "eng", "deskew": "true"},
timeout=120,
)
resp.raise_for_status()
job = resp.json()
while httpx.get(f"{API}{job['poll_url']}", headers=headers).json()["status"] not in (
"succeeded",
"failed",
):
time.sleep(5)
result = httpx.get(f"{API}{job['result_url']}", headers=headers, timeout=120)
result.raise_for_status() # a failed job answers its reason as a problem
with open("scan-ocr.pdf", "wb") as out:
out.write(result.content)
Optionen
Senden Sie die Optionen als Formularfelder neben file:
| Feld | Werte | Standard |
|---|---|---|
language |
eng, deu, spa, fra |
eng |
output_type |
pdfa (PDF/A-2b), pdf |
pdfa |
mode |
skip, redo, force |
skip |
deskew |
true, false |
false |
rotate_pages |
true, false |
false |
mode entscheidet, was mit Seiten geschieht, die schon Text haben. skip lässt sie, wie sie sind. redo ersetzt eine frühere OCR-Ebene. force führt OCR auf jeder Seite als Bild aus. mode=redo lässt sich nicht mit deskew kombinieren. Diese Anfrage antwortet mit 400 und kostet nichts.
Fehler
Jeder Fehler ist ein JSON-Problem-Dokument mit einem code. Eine abgelehnte Einreichung kostet nichts. Ein fehlgeschlagener Job wird erstattet, und seine Ergebnis-URL nennt den Grund:
| Code | Status | Bedeutung |
|---|---|---|
incompatible_options |
400 | mode=redo zusammen mit deskew |
payload_too_large |
413 | Die Datei ist größer als 25 MB |
unsupported_media_type |
415 | Die Datei ist kein PDF, PNG oder JPEG |
too_many_pages |
422 | Die Datei hat mehr als 200 Seiten |
bad_input |
422 | Die Datei ist nicht lesbar, oder ein Bild hat Transparenz |
encrypted_pdf |
422 | Das PDF braucht zum Öffnen ein Passwort |
already_has_text |
409 | Die Seiten haben schon Text: Senden Sie mode=redo oder mode=force |
pdfa_conversion_failed |
422 | Das Ergebnis ist kein gültiges PDF/A: Senden Sie output_type=pdf |
job_not_ready |
409 | Der Job ist noch nicht fertig |
result_expired |
410 | Das Ergebnis wurde nach 7 Tagen gelöscht |
ocr_failed, ocr_timeout |
500 | Die OCR ist fehlgeschlagen oder lief länger als 15 Minuten |
API-Schlüssel
Jeder OCR-Aufruf braucht einen API-Schlüssel. Ohne gültigen Schlüssel antwortet ein Aufruf mit 401. Sie können den Schlüssel auf drei Arten senden:
- im Header
X-API-Key: YOUR_KEY, - im Header
Authorization: Bearer YOUR_KEY, - per HTTP Basic mit beliebigem Benutzernamen und dem Schlüssel als Passwort, etwa
curl -u "x:YOUR_KEY". Ein Client, der nur eine Basis-URL annimmt, kann den Schlüssel darin mitgeben, alshttps://x:YOUR_KEY@gefolgt vom API-Host.
Setzen Sie den Schlüssel nie in einen Pfad oder einen Query-String. Beide landen in Zugriffsprotokollen.
MCP-Server
OCRmyPDF hat einen eigenen MCP-Server unter https://api.pagespool.com/mcp/ocrmypdf/. Er bietet zwei Tools. ocr_pdf reiht eine Datei ein, gesendet als Base64 bis 4 MB oder als Download-Link bis 25 MB. get_ocr_result meldet den Job und, sobald er erfolgreich war, einen Download-Link zum PDF, der 60 Minuten funktioniert. Die Tools brauchen einen API-Schlüssel und kosten so viel wie die API.
Ohne Code ausprobieren
Das kostenlose OCR-Tool führt dieselbe OCR für Dateien bis 3 Seiten und 4 MB aus, ohne Konto.
OCRmyPDF ist eine Marke ihres Inhabers; pagespool ist mit ihm nicht verbunden.