Ist Ihr PDF Scan oder Text?
Diese Funktion prüft eine PDF-Datei und stellt fest, ob sie aus eingescannten Bildseiten besteht oder bereits durchsuchbaren, nativen Text enthält. Sie eignet sich als schneller Vorab-Check, bevor Sie eine Datei archivieren, an eine Anwendung weitergeben oder einer aufwendigeren Texterkennung unterziehen.
Online ausführen
Führen Sie dies mit Ihrem Konto auf unseren Servern aus. Kostenlose Tools laufen in Ihrem Browser; dieses wird zum oben genannten Preis von Ihrem KIT-Guthaben abgebucht.
Bild oder Text – ein Unterschied mit Folgen
Eine PDF-Datei sieht auf den ersten Blick oft gleich aus, ob sie nun ein eingescanntes Bild enthält oder tatsächlichen, markierbaren Text. Der Unterschied entscheidet aber, ob sich der Inhalt kopieren und durchsuchen lässt oder ob zuerst eine Texterkennung nötig ist. Die Funktion prüft die interne Struktur der Datei und meldet eindeutig, um welchen der beiden Fälle es sich handelt.
Vorab-Check vor Archivierung oder OCR
Bevor ein Dokument GoBD-konform archiviert oder in großer Zahl per OCR verarbeitet wird, lohnt sich die Prüfung, welche Dateien überhaupt eine Texterkennung benötigen. Native PDFs mit eingebettetem Text lassen sich direkt durchsuchen und archivieren; nur die gescannten Bildseiten müssen zusätzlich per OCR aufbereitet werden. So sparen Sie sich unnötige Verarbeitungsschritte bei Dateien, die bereits durchsuchbaren Text enthalten.
Auch gemischte Dokumente werden erkannt
Manche PDF-Dateien bestehen aus mehreren Quellen: eingescannte Seiten neben Seiten mit nativem Text, etwa wenn ein unterschriebenes Blatt einem digital erstellten Vertrag beigefügt wurde. Die Funktion meldet, ob eine Datei einheitlich aus Bild- oder Textseiten besteht oder ob beide Formen gemischt vorkommen, damit Sie gezielt nur die betroffenen Seiten per OCR nachbearbeiten, statt das gesamte Dokument unnötig noch einmal zu verarbeiten.
Fester Preis pro Dokument
Die Prüfung kostet $0.002 pro Dokument, in US-Dollar, ohne zusätzliche Kosten pro Seite, da keine aufwendige Bildauswertung nötig ist – die Funktion liest lediglich die Dateistruktur aus. Sie läuft auf dieser Seite oder über die API, etwa um einen ganzen Ordner vor der Archivierung automatisiert zu prüfen. Die Verarbeitung läuft asynchron: Sie senden die Datei, und das Ergebnis liegt vor, sobald die Prüfung abgeschlossen ist.
Anwendungsfälle
Archiv vor der GoBD-konformen Ablage prüfen
Schneider IT-Systeme GmbH & Co. KG prüft einen Bestand älterer PDF-Dateien, um vor der Archivierung festzustellen, welche Dateien noch eine Texterkennung benötigen.
OCR gezielt nur dort einsetzen, wo nötig
Weber Metallbau GmbH sortiert eingehende PDF-Dateien vor, um die Texterkennung nur auf tatsächlich gescannte Dokumente anzuwenden und native PDFs direkt zu übernehmen.
Gemischtes Dokument vor der Weiterverarbeitung erkennen
Lukas Fischer prüft ein aus mehreren Quellen zusammengestelltes PDF, um festzustellen, welche Seiten als Bild vorliegen und zusätzlich bearbeitet werden müssen.
Häufige Fragen
Woran erkennt die Funktion, ob ein PDF gescannt ist?
Sie prüft die interne Struktur der Datei: enthält eine Seite eingebetteten, markierbaren Text oder ausschließlich ein Bild, wie es beim Scannen entsteht.
Was, wenn ein Dokument beide Formen enthält?
Die Funktion meldet, dass die Datei gemischt ist, und gibt an, welche Seiten Bild und welche nativen Text enthalten, sofern diese Information für den weiteren Ablauf benötigt wird.
Warum kostet die Prüfung nicht pro Seite?
Weil keine Bildauswertung stattfindet, sondern nur die Dateistruktur ausgelesen wird. Deshalb reicht ein fester Preis pro Dokument, unabhängig von der Seitenzahl.
Ist das ein Ersatz für eine echte Texterkennung?
Nein. Die Funktion stellt nur fest, ob eine Texterkennung nötig ist. Für Bildseiten ohne eingebetteten Text steht die eigentliche Texterkennung als eigene Funktion zur Verfügung.
Wird die Datei gespeichert?
Nein. Die Übertragung ist verschlüsselt, die Datei wird nur für die Dauer der Prüfung genutzt und danach gelöscht.
Wie groß darf die PDF-Datei sein?
Bis zu 25 MB und bis zu 10 Seiten pro Anfrage.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/ocr/scanned-or-native \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/ocr/scanned-or-native", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/ocr/scanned-or-native",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/ocr/scanned-or-native", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/ocr/scanned-or-native", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"input": "…"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ocr.scanned_or_native",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_mb | 25 |
max_pages | 10 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
413 | input_too_large | Die Eingabe überschreitet das Größenlimit dieser Aufgabe – die genaue Grenze steht auf der Seite. |