Studio reads MODULE.md / MODULE.<locale>.md from the installed bundle and renders it in the module-detail Documentation section. text-extract ships them now — EN+DE peers, same schema as the README but trimmed for the in-app reader. Signed-off-by: flemming-it <sf@flemming.it>
2.5 KiB
text.extract
Reine Textextraktion aus PDF- und DOCX-Dokumenten. Pure-Rust, in-WASM, ohne deklarierte Berechtigungen. Der kanonische erste Schritt in Flows, die Rohtext brauchen — anonymisieren, zusammenfassen, übersetzen, per LLM klassifizieren, Audit-redigieren.
Capability
text.extract@0.1.0
Eingaben
| Name | Typ | Beschreibung |
|---|---|---|
document |
bytes | Das zu extrahierende Dokument. MIME-Typen siehe unten. |
Akzeptierte MIME-Typen (deklariert in
module.yaml#accepts_mime, von Studio als File-Picker-Filter
gelesen):
application/pdfapplication/x-pdfapplication/vnd.openxmlformats-officedocument.wordprocessingml.document
Andere MIME-Typen werden mit invalid_input abgelehnt — vor
jedem Parsen.
Ausgabe
| Name | Typ | Beschreibung |
|---|---|---|
extracted |
json | ExtractedDocument-Schema siehe unten. |
{
"engine": "pdf-extract",
"engine_version": "0.7",
"pages": [
{ "number": 1, "text": "…" }
]
}
confidence und bbox pro Seite sind im Schema für eine
spätere Service-Mode-Variante (pdfium / mupdf via
Host-Services) reserviert. v0.1.0 setzt diese Felder nicht;
das Schema akzeptiert sie als optional.
Berechtigungen
Keine. Reine Rust-Pipeline (pdf-extract, zip, quick-xml).
Kein Dateisystem, kein Netz. permissions: [] in
module.yaml macht das explizit; der Hub erzwingt es.
Grenzen in v0.1.0
- Layout-naives PDF. Mehrspaltige oder tabellenlastige Dokumente können umsortierten Text liefern. Ein-Spalten- Fließtext ist solide.
- Kein OCR. Gescannte (nur-Bild-)PDFs liefern pro Seite
leeren Text. Künftiges
text.ocr@^0als Vor-Schritt. - Nur DOCX bei Office.
.doc(Altformat),.rtf,.odtnoch nicht unterstützt.
1.0.0 setzt entweder die Service-Mode-Variante
(pdfium-Qualität + Layout) voraus oder einen
nachgewiesen-guten Extraktions-Score auf einem
repräsentativen Korpus.
Beispiel-Flow
name: extract-anonymise
inputs:
document: bytes
steps:
- id: extract
use: text.extract@^0
with:
document: $inputs.document
- id: redact
use: text.anonymize@^0
with:
text: $extract.extracted.pages[*].text
outputs:
redacted: $redact.anonymized
Build
cargo build --release --target wasm32-wasip2
# Ausgabe: target/wasm32-wasip2/release/text_extract.wasm