Ihr erster Scan in fünf Minuten
Ein Endpunkt genügt: Sie senden ein Dokumentenfoto und erhalten das aufbereitete, perspektivisch korrigierte Bild zurück. Diese Seite führt Sie mit cURL, Python und Node durch, danach folgt das Browser-SDK.
Zuerst ohne Konto
Wenn Sie nur das Ergebnis sehen wollen, öffnen Sie die Demo, wählen ein Beispielfoto und scannen es. Ohne Registrierung, ohne Schlüssel, und Sie können das Ergebnis direkt mit dem Originalfoto vergleichen.
Schritt 1: API-Schlüssel holen
- Konto anlegen. Die Registrierung enthält 50 kostenlose Credits und benötigt keine Kreditkarte.
- Im Dashboard zu API-Schlüssel wechseln.
- Einen Schlüssel anlegen und kopieren. Der Schlüssel wird einmal angezeigt, behandeln Sie ihn wie ein Passwort.
Schritt 2: erster API-Aufruf
Senden Sie ein Bild als Multipart-Formulardaten an den Crop-Endpunkt. Mit binary=true, dem Standard, ist der Antwortkörper das aufbereitete Bild selbst, und -o schreibt es in eine Datei.
curl -X POST "https://www.scankit.io/crop" \
-H "X-API-Key: YOUR_API_KEY" \
-F "file=@document.jpg" \
-F "output_width=1536" \
-F "filter=white" \
-o scan.jpgDerselbe Aufruf in Python:
import requests
with open("document.jpg", "rb") as fh:
response = requests.post(
"https://www.scankit.io/crop",
headers={"X-API-Key": "YOUR_API_KEY"},
files={"file": ("document.jpg", fh, "image/jpeg")},
data={"output_width": 1536, "filter": "white"},
timeout=60,
)
response.raise_for_status()
with open("scan.jpg", "wb") as out:
out.write(response.content)Und in Node, ohne SDK:
import fs from 'node:fs';
const body = new FormData();
body.append('file', new Blob([fs.readFileSync('document.jpg')]), 'document.jpg');
body.append('output_width', '1536');
body.append('filter', 'white');
const response = await fetch('https://www.scankit.io/crop', {
method: 'POST',
headers: { 'X-API-Key': 'YOUR_API_KEY' },
body,
});
const scan = Buffer.from(await response.arrayBuffer());
fs.writeFileSync('scan.jpg', scan);Sie erhalten ein sauberes, gerades, eng beschnittenes Bild des Dokuments, bereit für OCR, KI-Extraktion oder Ihr Archiv. Jeder Aufruf kostet einen Credit, ein neues Konto startet mit fünfzig.
Schritt 3: die Parameter, die Sie wirklich brauchen
| Parameter | Standard | Wirkung |
|---|---|---|
| file oder files | erforderlich | Ein Bild als file, mehrere Seiten als files. |
| output_width | 1536 | Breite des zurückgegebenen Bildes in Pixeln. |
| filter | white | white bereinigt den Hintergrund, flat erhält die Textur, original verändert nichts. |
| version | 2 | Verarbeitungspipeline. 2 ist die aktuelle. |
| strip_black_border | true | Entfernt schwarze Ränder um die erkannte Seite. |
| binary | true | true liefert die Bilddaten, false verpackt das Ergebnis in JSON. |
| return_pdf | false | Liefert ein PDF statt eines Bildes. |
| ocr_lang | eng | Sprachhinweis für die Texterkennung. |
| output_width, segment_count | Zahlen | Nicht numerische Werte werden mit 400 beantwortet statt mit einem Serverfehler. |
Mehrere Seiten senden Sie in einer Anfrage über den Parameter files, oder Sie rufen den Endpunkt je Seite auf. Beides wird unterstützt, der Mehrseitenpfad hält die Seiten in einer Antwort.
Schritt 4: Erfassung im Browser
Wenn Ihre eigenen Nutzer das Foto machen sollen, laden Sie das SDK von unserem CDN und lassen es die Erfassung übernehmen. Das SDK kommt von scankit.io, es gibt also nichts zu bauen und nichts zu veröffentlichen.
<link rel="stylesheet" href="https://www.scankit.io/sdk/scankit-sdk.css" />
<div id="scan-area"></div>
<script src="https://www.scankit.io/sdk/scankit-sdk.min.js"></script>
<script>
const scanner = new ScanKit({
target: '#scan-area',
apiKey: 'YOUR_API_KEY',
onScanComplete: (result) => {
// result.image is the finished scan as a Blob
uploadToYourBackend(result.image);
},
});
scanner.init();
</script>Der Scanner ruft Ihren onScanComplete-Handler mit dem fertigen Scan auf. Ein Hosted-Scanner ist die Alternative, wenn im Frontend gar kein Schlüssel liegen darf: Sie legen den Scanner im Dashboard an und verschicken den Link an die Person, die scannen soll.
Credits, Limits und Fehler
- Ein Credit pro Scan-Aufruf (crop, rectify, doc_axis_warp). Fünfzig kostenlose Credits bei der Registrierung.
- Tausend Scan-Anfragen pro Stunde und Schlüssel. Die Anfrage darüber wird mit 429 und einem Retry-After-Header abgelehnt.
- Die Authentifizierung läuft über den Header X-API-Key, über ein Authorization-Bearer-Token oder über den Query-Parameter api_key. Empfohlen ist der Header.
Typische Fehlerantworten, in der Reihenfolge, in der Sie ihnen begegnen:
| Status | Bedeutung | Was zu tun ist |
|---|---|---|
| 401 | Missing API Key | Header X-API-Key senden. Prüfen Sie auf ein Leerzeichen am Ende des Schlüssels. |
| 402 | Insufficient credits | Credits im Dashboard aufladen. Eine abgelehnte Anfrage verbraucht keine Credits. |
| 400 | Ungültiger Parameter | output_width und segment_count müssen ganze Zahlen sein. |
| 429 | Rate Limit | Die in Retry-After genannten Sekunden abwarten, dann erneut senden. Eine abgelehnte Anfrage verbraucht keine Credits. |
{
"errors": [
{ "title": "Missing API Key" }
]
}