Let's Build: KI-Lebenslaufparser mit Transloadit
Wandeln Sie einen Lebenslauf im PDF- oder DOCX-Format in eine lokale JSON-Datei mit Kontaktdaten, Kenntnissen, Berufserfahrung und Ausbildung um. Dieses TypeScript-Beispiel nutzt Transloadit, um Dokumente bei Bedarf zu konvertieren und Felder mit einem KI-Modell zu extrahieren. Sie können es in einem neuen Verzeichnis ohne das Repository dieser Website ausführen und das gespeicherte Ergebnis anschließend mit Ihrem Quelldokument vergleichen.
Was wir entwickeln
- Einen Lebenslauf im PDF- oder DOCX-Format annehmen.
- DOCX mit 🤖 /document/convert in PDF konvertieren.
- Felder mit 🤖 /ai/chat extrahieren und als JSON speichern.
Das Beispiel wählt anthropic/claude-sonnet-4-6, das PDF-Eingaben über /ai/chat unterstützt.
Es akzeptiert keine Bilddateien und erstellt keine Rangliste von Bewerbenden. Die Schemavalidierung
prüft die Struktur der Antwort; sie belegt nicht, dass die extrahierten Informationen korrekt sind.
Zuerst das Schema (zod)
Das Beispielskript exportiert das Schema, das sowohl für die
Modellanfrage als auch für die lokale Validierung verwendet wird. Nachdem Sie die unten beschriebene
App heruntergeladen haben, speichern Sie dies als inspect-schema.ts im
Projektstammverzeichnis und führen Sie node inspect-schema.ts aus:
import { zodToJsonSchema } from 'zod-to-json-schema'
import { resumeSchema } from './resume-parser/run.ts'
const resumeJsonSchema = zodToJsonSchema(resumeSchema)
console.log(JSON.stringify(resumeJsonSchema, null, 2))
Alle Felder müssen in der Antwort vorhanden sein. Für unbekannte Textwerte wird eine leere
Zeichenfolge verwendet, für Listen ohne Einträge ein leeres Array. Neben Kontakt- und
Beschäftigungsfeldern enthält das Schema summary,
certifications und links; es liefert keine Konfidenzwerte.
Eine vollständig leere Extraktion wird abgelehnt, ein plausibler, aber falscher Wert kann die
Validierung dennoch bestehen.
Pipeline im Überblick
PDF resumes ──▶ /ai/chat ──▶ local JSON
DOCX resumes ──▶ /document/convert (pdf) ──▶ /ai/chat ──▶ local JSON
Assembly-Ausschnitt
Um die tatsächlichen Steps zu prüfen, ohne eine
Assembly zu übermitteln, speichern Sie dies als
inspect-steps.ts im selben Projektstammverzeichnis und führen Sie
node inspect-steps.ts aus:
import { example } from './resume-parser/run.ts'
const steps = example.steps({ test_credentials: true })
console.log(JSON.stringify({ steps }, null, 2))
Die Konfiguration leitet hochgeladene PDFs in den Step pdf_verified und konvertiert andere
akzeptierte Dokumente mit pdf_converted. Der Step extract_resume
verwendet diese Ausgaben und fordert JSON mit einem serialisierten Schema an. Das Erstellen dieser
Konfiguration löst keinen API-Aufruf aus. Die CLI übernimmt den Upload, das Warten, den Download des
Ergebnisses und dessen Validierung vor dem Speichern.
Beispiel-App ausprobieren
Verwenden Sie ein neues, leeres Verzeichnis und folgen Sie der vollständigen
Einrichtungsanleitung. Sie installiert die getestete Kombination
aus @transloadit/node 4.14.0, Zod 3.25.76 und zod-to-json-schema 3.25.2
mit Yarn 4.12.0. Diese Anleitung wurde mit Node.js 26.12.1 getestet;
verwenden Sie eine weiterhin gepflegte Node.js-Version, die die Voraussetzung in der README erfüllt.
Corepack und cURL müssen ebenfalls verfügbar sein. Diese Versionsangaben dienen der Reproduktion
und sind keine Aussagen zu den neuesten Versionen.
Dieses bestehende Ausführungsprogramm nutzt Schemata von Zod 3 mit dem veralteten JSON-Schema-Konverter. Behalten Sie die aufgeführten festgelegten Versionen bei, um das Beispiel zu reproduzieren. Für eine Anpassung der App an Zod 4 muss auch die Schemakonvertierung aktualisiert werden; nur die installierte Hauptversion zu ändern, reicht nicht aus.
Laden Sie sowohl resume-parser/run.ts als auch shared/runtime.ts mit den
Befehlen aus der README herunter. Ihre relative Verzeichnisstruktur ist wichtig, da der Parser die
gemeinsame Laufzeitumgebung importiert. Führen Sie die Einrichtung außerhalb eines bestehenden
Projekts aus, damit dessen Paketmanager-Konfiguration Ihren ersten Test nicht beeinflusst. Der
abschließende Befehl --help in der README startet die App, ohne etwas
hochzuladen.
Die Einrichtung erstellt package.json, ohne eine vorhandene Datei zu ersetzen.
Falls die Installation oder ein Download vorzeitig stoppt, behalten Sie dieses Verzeichnis zur
Prüfung und beginnen Sie in einem anderen leeren Verzeichnis erneut.
Exportieren Sie den Auth Key und das Auth Secret aus Ihrem Workspace bei Transloadit als
TRANSLOADIT_AUTH_KEY und TRANSLOADIT_AUTH_SECRET in der Shell, in der Sie die App
ausführen werden. Nehmen Sie ihre Werte nicht in die Versionsverwaltung auf. Das Skript liest die
Prozessumgebung und lädt keine Umgebungsdatei.
Lassen Sie für den folgenden Befehl TRANSLOADIT_AI_CREDENTIALS ungesetzt:
--test-credentials wählt explizit die von Transloadit bereitgestellten KI-Zugangsdaten.
Die KI-Testzugangsdaten und die anderen Steps zur Verarbeitung werden berechnet. Alternativ
können Sie in TRANSLOADIT_AI_CREDENTIALS den Namen eines vorhandenen Zugangsdaten-Eintrags für
Anthropic-KI verwenden und das Flag weglassen. Wählen Sie genau einen Modus; das Programm erstellt
oder ändert keine Zugangsdaten. Lesen Sie die
Dokumentation zu KI-Zugangsdaten, bevor Sie einen Modus wählen.
Legen Sie unter resume.pdf einen Lebenslauf ab, den Sie hochladen dürfen,
und führen Sie dann Folgendes aus:
node resume-parser/run.ts --input ./resume.pdf --output ./result.json --test-credentials
Verwenden Sie für jeden Durchlauf einen neuen Zielpfad. Die App lehnt eine bereits vorhandene Ausgabedatei ab, bevor sie eine Assembly übermittelt, und lässt die Eingabe unverändert. Dieses Tutorial begrenzt die Eingabe und die heruntergeladene Ausgabe auf 20 MiB; dies sind Grenzen des Beispiels, keine Produktgrenzen von Transloadit. Es lässt fünf Minuten für die Verarbeitung und 30 Sekunden für den Download des Ergebnisses zu.
Bei Erfolg gibt das Terminal eine Assembly ID und eine Meldung Saved aus, gefolgt vom lokalen Ausgabepfad. Prüfen Sie diese Datei:
cat ./result.json
Vergleichen Sie Namen, E-Mail-Adressen, Kenntnisse, Datumsangaben und Beschäftigungseinträge mit dem Original, bevor Sie sie in ein ATS importieren. Eine erfolgreiche Assembly oder lesbares JSON belegt nicht ausreichend, dass die Extraktion korrekt ist. Halten Sie die gespeicherte Datei vertraulich, wenn sie personenbezogene Daten enthält.
Falls der Durchlauf nach der Ausgabe einer Assembly ID fehlschlägt, prüfen Sie diese Assembly in der Console, bevor Sie es erneut versuchen. Ein lokales Timeout oder eine Unterbrechung belegt nicht, dass die Verarbeitung auf dem Server gestoppt wurde; die Arbeit kann weiterhin berechnet werden. Das Skript führt eine Assembly nicht automatisch erneut aus. Wenn es einen Fehler bei der Ergebnisvalidierung behandelt, entfernt es die unvollständige Ausgabe und bewahrt eine bereits vorhandene Zieldatei. Eine Unterbrechung kann eine unvollständige lokale Datei hinterlassen; prüfen Sie diese, bevor Sie einen neuen Zielpfad wählen.
Beispieleingaben
Beginnen Sie mit einem fiktiven Lebenslauf, den Sie als PDF oder DOCX erstellen. Verwenden Sie
beispielsweise „Jamie Example“, jamie@example.test, die Kenntnisse „TypeScript“ und
„PostgreSQL“ sowie eine Position bei „Example Systems“. Ergänzen Sie für diese Position einen
konkreten Erfolg wie „Ich habe einen internen Dienst zur Dokumentensuche entwickelt.“ Mit diesen
bekannten Fakten können Sie das gespeicherte Ergebnis prüfen, ohne Informationen einer realen
Person hochzuladen.
Ersetzen Sie --input ./resume.pdf durch Ihren DOCX-Pfad, um den Konvertierungszweig zu
nutzen. Es gelten dieselbe CLI und dasselbe JSON-Schema. Dokumentlayout und Modellinferenz können
das Ergebnis beeinflussen. Prüfen Sie daher jede Ausgabe, statt ein erfolgreiches Beispiel als
Genauigkeitsgarantie zu betrachten.
Nächste Schritte
Normalisieren Sie Telefonnummern und Datumsangaben erst, nachdem Sie deren Quellwerte geprüft haben. Behandeln Sie leere Felder als fehlende Informationen und leiten Sie unsichere Extraktionen zur manuellen Prüfung weiter. Wenn Sie das Beispielskript für ein ATS anpassen, behalten Sie diesen Prüfschritt zwischen Extraktion und Import bei.
