Some checks failed
CI / Linux x86_64 (Forgejo) (push) Failing after 2s
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>
96 lines
2.5 KiB
Markdown
96 lines
2.5 KiB
Markdown
# 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/pdf`
|
|
- `application/x-pdf`
|
|
- `application/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. |
|
|
|
|
```json
|
|
{
|
|
"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@^0` als Vor-Schritt.
|
|
- **Nur DOCX bei Office.** `.doc` (Altformat), `.rtf`, `.odt`
|
|
noch 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
|
|
|
|
```yaml
|
|
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
|
|
|
|
```bash
|
|
cargo build --release --target wasm32-wasip2
|
|
# Ausgabe: target/wasm32-wasip2/release/text_extract.wasm
|
|
```
|