Konvertiert verschiedene Dokumentenformate zu Plaintext für LightRAG.
| Kategorie | Formate |
|---|---|
| Office | DOCX, XLSX, PPTX, DOC, XLS, ODT, RTF |
| PDF (direkt + OCR-Fallback) | |
| Web / Markup | HTML, HTM, MD, MDX |
| MSG (Outlook), EML | |
| E-Book | EPUB |
| Text / Code | TXT, JSON, XML, YAML, CSV, LOG, PY, JS, JAVA, C, CPP, GO, RB, PHP, CSS, TS, SWIFT, … |
| Bilder | JPG, PNG, GIF, BMP, TIFF, WEBP (via OCR) |
# Image bauen
docker compose build
# Konvertierung starten (nutzt ./input und ./output aus dem Projektverzeichnis)
docker compose upOption 1 – Umgebungsvariablen (empfohlen für Docker):
docker run --rm \
-v /pfad/zu/meinen/dokumenten:/data/in \
-v /pfad/zu/ausgabe:/data/out \
-e INPUT_DIR=/data/in \
-e OUTPUT_DIR=/data/out \
lightrag-document-converterOption 2 – docker-compose.yml anpassen:
volumes:
- /pfad/zu/meinen/dokumenten:/app/input
- /pfad/zu/ausgabe:/app/outputOption 3 – CLI-Flags:
docker run --rm \
-v /pfad/zu/meinen/dokumenten:/data/in \
-v /pfad/zu/ausgabe:/data/out \
lightrag-document-converter \
--input /data/in --output /data/out| Variable | Standard | Beschreibung |
|---|---|---|
INPUT_DIR |
/app/input |
Quellordner mit Dokumenten |
OUTPUT_DIR |
/app/output |
Zielordner für .txt-Dateien |
CHAR_MAPPING_FILE |
/app/char_mapping.json |
Pfad zur Zeichen-Mapping-Datei |
Nach der Konvertierung wendet der Converter automatisch Ersetzungsregeln aus char_mapping.json an. So lassen sich problematische Sonderzeichen, Steuerzeichen oder typografische Zeichen normalisieren, bevor die Texte in LightRAG landen.
{
"replacements": {
"\u00ad": "",
"\u2013": "-",
"\u00a0": " ",
"\u2026": "...",
"\u201c": "\"",
"\u201d": "\""
},
"remove_patterns": [
"\\x00-\\x08",
"\\x0e-\\x1f"
],
"normalize_whitespace": true,
"max_consecutive_newlines": 3
}| Feld | Typ | Beschreibung |
|---|---|---|
replacements |
Object | Zeichen-zu-Zeichen-Mapping. Leerer String "" = Zeichen entfernen |
remove_patterns |
Array | Regex-Zeichenbereiche, die komplett entfernt werden (z. B. Steuerzeichen) |
normalize_whitespace |
bool | Mehrfache Leerzeichen auf einem auf einer Zeile zusammenfassen |
max_consecutive_newlines |
int | Maximale aufeinanderfolgende Leerzeilen (0 = deaktiviert) |
In config.yaml:
char_mapping_file: "" # leer lassen = komplett deaktiviertOder per Umgebungsvariable:
docker run -e CHAR_MAPPING_FILE="" ...# Python-Abhängigkeiten
pip3 install -r requirements.txt
# macOS – System-Tools
brew install tesseract tesseract-lang poppler pandoc
brew install --cask libreoffice
# Linux – System-Tools
sudo apt-get install -y tesseract-ocr tesseract-ocr-eng poppler-utils pandoc libreofficeAlle Einstellungen werden in config.yaml vorgenommen:
input_dir: "./input"
output_dir: "./output"
char_mapping_file: "char_mapping.json"
workers: 4
ocr:
enabled: true
engine: "auto" # auto | tesseract | paddleocr
languages: "deu+eng"
logging:
level: "INFO" # DEBUG | INFO | WARNING | ERROR
file: "conversion.log"# Einfacher Start
python3 main.py
# Pfade überschreiben
python3 main.py --input ./dokumente --output ./texte
# Eigene Mapping-Datei
python3 main.py --char-mapping ./mein_mapping.json
# Weitere Optionen
python3 main.py --workers 8 # Mehr parallele Threads
python3 main.py --no-ocr # OCR deaktivieren
python3 main.py --verbose # Debug-Ausgabe
python3 main.py --config other.yamlDer Converter behält die Ordnerstruktur bei:
input/
├── bericht.pdf
└── unterordner/
└── notizen.docx
output/
├── bericht.txt
└── unterordner/
└── notizen.txt