Arquitectura
DocMind reparte el trabajo entre @dragon708/docmind-shared, paquetes de formato (PDF, DOCX, OCR) y dos fachadas (navegador / Node). Los diagramas describen la forma prevista; valida el comportamiento para tu fileKind y versión.
Papel de cada paquete
@dragon708/docmind-shared
Contratos: FileKind, AnalysisResult, DetectFileKindInput, TextAnalyzeInput, errores (DocMindError, isDocMindError) y tipos Epic 1 de introspección (GetCapabilitiesOptions, ExplainAnalysisPlanOptions, formas de resultado asociadas). APIs transversales: detectFileKind, analyzeText.
entrada --> detectFileKind / analyzeText --> resultados tipados@dragon708/docmind-pdf
Pipeline PDF: texto digital, metadatos, OCR raster opcional (Node). Las opciones llegan como pdf en NodeAnalyzeOptions.
@dragon708/docmind-docx
Office Open XML (.docx) — texto estructurado y conversión a HTML.
@dragon708/docmind-ocr
OCR Tesseract en imágenes; OcrOptions (langs, signal) van en NodeAnalyzeOptions.ocr y BrowserAnalyzeOptions.ocr.
@dragon708/docmind-browser
analyzeFile, APIs facetadas, getCapabilities y explainAnalysisPlan para File, Blob, ArrayBuffer — sin fs ni Buffer en la entrada pública. PDF no se procesa como en Node; DOCX e imágenes se enrutan si el bundle incluye los módulos (p. ej. docmind-docx).
[Navegador] File | Blob | ArrayBuffer --> docmind-browser --> módulos de formato (DOCX, OCR, …)@dragon708/docmind-node
analyzeFile, las mismas facetas, getCapabilities y explainAnalysisPlan para rutas, URLs file: u { data, name?, mimeType? }, más readFileToInput, bufferToInput, resolveNodeAnalyzeInput.
[Node] ruta | URL | { data, name?, mimeType? } --> docmind-node --> PDF / DOCX / OCR / textoCómo se apilan
@dragon708/docmind-shared
^
+---------------+---------------+
| |
@dragon708/docmind-browser @dragon708/docmind-node
| |
(entradas DOM) (rutas / buffers)
Capa de formato: docmind-pdf, docmind-docx, docmind-ocrEl playground añade docmind-client y docmind-server: mapean language a ocr.langs y ocrMode a pdf.ocr en analyze, extract-text, convert-html, extract-structured, explain-plan y extracción PDF por página; extract-structured reenvía también docxInclude_* y options.preprocess hacia extractServerStructuredData. Aplican sanitizeDocxBinaryForJson en respuestas correctas de POST /api/analyze. Ver Navegador, Node y Resumen de API.