Text aus gescannten PDFs extrahieren
Wandelt eine gescannte, nicht durchsuchbare PDF-Datei in maschinenlesbaren Text um: Seite für Seite wird gelesen und als Text zurückgegeben. Gedacht für Belege, alte Ordner, Verträge und Behördenschreiben, die bisher nur als Bild in der PDF-Datei liegen und sich weder kopieren noch durchsuchen lassen, obwohl der Inhalt eigentlich längst digital vorliegen sollte.
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.
Woran Sie eine gescannte PDF-Datei erkennen
Lässt sich in der PDF-Datei kein Text markieren oder kopieren und liefert die Suchfunktion des PDF-Programms keine Treffer, handelt es sich um eine gescannte, also bildbasierte Datei. Genau für diesen Fall ist die Funktion gedacht: Jede Seite wird als Bild gelesen und in Text zurückverwandelt, unabhängig davon, mit welchem Scanner, Kopierer oder Multifunktionsdrucker sie ursprünglich entstanden ist, und unabhängig von der Auflösung, in der gescannt wurde.
So läuft die Umwandlung ab
Sie laden die PDF-Datei auf dieser Seite hoch, wählen bei Bedarf den Seitenbereich aus und erhalten den Text je Seite zurück, bereit zum Kopieren oder Weiterverarbeiten in einem eigenen Dokument. Über die API lässt sich derselbe Ablauf in eine Buchhaltungs- oder Archivierungssoftware einbinden; App und E-Mail-Kanal folgen als weitere Wege, dieselbe Funktion ohne eigene Entwicklung zu nutzen, sobald sie verfügbar sind.
Preis pro Seite
$0.010 pro Anfrage plus $0.0575 pro verarbeiteter Seite, ohne Abonnement und ohne Mindestmenge, die zuerst erreicht werden müsste. Eine zehnseitige, gescannte Akte kostet damit rund $0.59. Der Preis gilt unabhängig davon, wie viel Text auf der jeweiligen Seite steht, und unabhängig davon, ob die Seite Tabellen, Fließtext oder handschriftliche Vermerke am Rand enthält. Auch bei sehr dicht beschriebenen Seiten mit kleiner Schrift ändert sich der Preis nicht, sodass sich die Kosten für eine ganze Akte schon vorab verlässlich abschätzen lassen.
Nutzen für die Ablage
Sobald der Text vorliegt, lässt er sich durchsuchen, filtern und in andere Systeme übernehmen – eine Voraussetzung für ein Archiv, das später schnell auffindbar sein soll, statt Ordner für Ordner von Hand durchgeblättert zu werden, wenn ein einzelnes Dokument gesucht wird. Die Funktion liefert den reinen Text; die eigentliche Ablage in PDF/A oder einem Dokumentenmanagementsystem übernimmt weiterhin Ihre eigene Software, wie es der Ablageprozess Ihres Betriebs vorsieht.
Anwendungsfälle
Belegordner ohne manuelles Abtippen
Katrin Baumann, selbstständige Grafikdesignerin, lässt eingescannte Belege aus den letzten Jahren auslesen, um die Beträge für die Steuererklärung in eine Tabelle zu übernehmen.
Altakten durchsuchbar machen
Schneider IT-Systeme GmbH & Co. KG digitalisiert einen Aktenordner mit eingescannten Verträgen, damit sich einzelne Klauseln später per Volltextsuche finden lassen.
Vereinsprotokolle aus Papierarchiven
Ein Sportverein liest jahrzehntealte, gescannte Sitzungsprotokolle aus und stellt den Mitgliedern eine durchsuchbare Textsammlung zur Verfügung.
Handwerksbetrieb ohne Papierarchiv
Lukas Fischer übernimmt gescannte Lieferscheine aus dem Papierarchiv seines Betriebs als Text, um sie in die Warenwirtschaft einzupflegen.
Häufige Fragen
Ist das mit dem Datenschutz vereinbar? Wo wird die Datei verarbeitet?
Die PDF-Datei wird ausschließlich zur Texterstellung verarbeitet und nicht zu anderen Zwecken weiterverwendet. Es entstehen keine dauerhaft gespeicherten Kopien in einem Konto, da es keine Konten gibt.
Erkennt die Funktion, ob eine PDF-Datei bereits Text enthält?
Diese Funktion liest jede Seite als Bild und eignet sich damit besonders für gescannte Dateien. Enthält die Datei bereits eingebetteten Text, lässt sich dieser meist direkt mit der eigenen PDF-Software kopieren.
Was kostet eine zehnseitige Datei?
$0.010 Grundgebühr pro Anfrage plus $0.0575 je Seite – zehn Seiten kosten damit rund $0.59, ohne weitere Kosten.
Gibt es ein Limit für Seitenzahl oder Dateigröße?
Ja: bis zu 10 Seiten und bis zu 25 MB pro Datei in einem Lauf.
Bekomme ich eine Rechnung für die Nutzung?
Für jede Zahlung erhalten Sie einen Beleg über den bezahlten Betrag; ob dieser für Ihre Buchhaltung als Rechnung im formalen Sinn ausreicht, hängt von Ihrer internen Praxis ab.
Wie gut funktioniert das bei schlechten Scans?
Bei klaren Scans mit gedrucktem Text ist die Trefferquote hoch. Verwaschene Stempel, Kaffeeflecken oder sehr blasse Kopien senken die Genauigkeit spürbar.
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/pdf \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/ocr/pdf", {
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/pdf",
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/pdf", 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/pdf", 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.pdf",
"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. |
422 | task_failed | Die Aufgabe ist fehlgeschlagen und wird nicht berechnet. |