@dragon708/docmind-node
v1.14.0
Published
Official DocMind Node facade: analyzeFile, intent APIs, PDF/DOCX/OCR, and fs helpers.
Readme
@dragon708/docmind-node
Cliente oficial de DocMind para Node.js (API pública de alto nivel): un solo módulo para analyzeFile, extracción de texto/metadata/HTML, OCR, documento estructurado, Markdown híbrido (DOCX, PDF, HTML, CSV, Excel mediante el motor de conversión a Markdown integrado en servidor), texto para LLM y trozos con Markdown. Resuelve rutas de disco y file: URLs con fs.
Requisito: Node ≥ 18 (según package.json del paquete).
Instalación
npm install @dragon708/docmind-nodeArrastra transitivamente @dragon708/docmind-pdf, @dragon708/docmind-docx, @dragon708/docmind-ocr, @dragon708/docmind-markdown, @dragon708/docmind-shared y dependencias pesadas (pdfjs, Tesseract, runtime de conversión a Markdown empaquetado con docmind-markdown, etc.). No es adecuado para bundlers “browser-only” sin sustituir por @dragon708/docmind-browser.
Qué cubre este runtime
| Formato | Texto / HTML | Structured | Markdown (extractMarkdown) | Notas |
|---------|----------------|------------|------------------------------|--------|
| PDF | Sí (nativo + OCR opcional) | Sí | Sí (conversión a Markdown en Node) | pdf.ocr, ocrStrategy, maxPages |
| DOCX | Sí (Mammoth) | Sí | Sí (Mammoth → Turndown) | docx.include (headings, tables, blocks, …) |
| Imagen raster | OCR (Tesseract) | Sí | Vía structured fallback típico | PNG/JPEG/WebP; TIFF multipage |
| Texto UTF-8 | Sí | Normalización | Según contenido | — |
| HTML / CSV / Excel (bytes) | — | — | Sí | Rutas binarias en @dragon708/docmind-markdown (solo Node) |
Uso rápido
Analizar un fichero desde disco
import { readFile } from "node:fs/promises";
import { analyzeFile } from "@dragon708/docmind-node";
const data = await readFile("informe.pdf");
const result = await analyzeFile({
data,
name: "informe.pdf",
mimeType: "application/pdf",
});
// result.text, result.html, result.warnings, result.fileKind, …Entrada unificada (NodeAnalyzeInput)
import { readFileToInput, analyzeFile } from "@dragon708/docmind-node";
const input = await readFileToInput("/ruta/al/archivo.docx");
const result = await analyzeFile(input);Documento estructurado
import { extractStructuredData } from "@dragon708/docmind-node";
const structured = await extractStructuredData({
data: buffer,
name: "doc.docx",
});
// structured.blocks, structured.tables, structured.pages, …Markdown híbrido (PDF, DOCX, HTML, CSV, XLSX…)
import { extractMarkdown } from "@dragon708/docmind-node";
const md = await extractMarkdown(
{ data: buffer, name: "libro.xlsx" },
{
onMarkdownExtract: (info) => {
console.log(info.strategy, info.warnings, info.routing);
},
markdownSpreadsheet: { maxRowsPerSheet: 500 },
},
);
// md es string (el cliente Node devuelve el Markdown listo; ver tipos)La firma exacta y el tipo de retorno siguen los tipos exportados (
NodeExtractMarkdownOptions, etc.); consulta el IDE odist/*.d.ts.
Texto para LLM y trozos
import { extractLlmContent, extractStructuredChunks } from "@dragon708/docmind-node";
const llmText = await extractLlmContent(input, { /* llm render options */ });
const chunks = await extractStructuredChunks(input, { chunks: { includeMarkdown: true } });Introspección
import { getCapabilities, explainAnalysisPlan } from "@dragon708/docmind-node";
const caps = await getCapabilities({ /* … */ });
const plan = await explainAnalysisPlan({ /* … */ });Clasificación de tipo de fichero
import { detectFileKind } from "@dragon708/docmind-node";
// Re-export de @dragon708/docmind-shared; útil tras resolver rutasConversores directos HTML / CSV / Excel (Node)
import {
convertHtmlToMarkdown,
convertCsvToMarkdown,
convertSpreadsheetToMarkdown,
detectBinaryFormat,
} from "@dragon708/docmind-node";Imágenes incrustadas en DOCX (Node)
import {
extractImagesFromDocx,
convertDocxImagesForWeb,
docxImageToDataUri,
} from "@dragon708/docmind-node";Extractores estructurados por formato
import {
extractStructuredDataFromPdf,
extractStructuredDataFromDocx,
extractStructuredDataFromImage,
} from "@dragon708/docmind-node";Opciones destacadas (NodeAnalyzeOptions)
Resumen; el detalle está en nodeAnalyzeOptions.ts y JSDoc:
ocr: política PDF / metadatos de pipeline (off|auto|force).language: idiomas OCR (BCP-47 / Tesseract).maxPages,ocrStrategy: PDF (estrategia del pipeline raster).docx:include(headings,tables,blocks,pagesApprox,embeddedImages, …).signal:AbortSignal.structuredOutput/output: opt-in destructuredenanalyzeFile(veranalyzeFileRequestsStructureden shared).
Para Markdown / LLM / chunks:
NodeExtractMarkdownOptions:markdown,markdownDocx,markdownPdf,markdownHtml,markdownCsv,markdownSpreadsheet,onMarkdownExtract, structured routing, etc.NodeExtractLlmContentOptions,NodeExtractStructuredChunksOptions.
Helpers de entrada
readFileToInput,bufferToInput,resolveNodeAnalyzeInput: convierten path / buffer / URL enNodeAnalyzeInput.
Constantes y capacidades
DOCX_EMBEDDED_IMAGE_CAPABILITIES,DOCX_STRUCTURE_CAPABILITIES,docxIncludeRequested: matrices de capacidades para informes.
Errores y advertencias
Esta API propaga DocMindError (@dragon708/docmind-shared) cuando el input es inválido o el formato no está soportado. Los PDF/DOCX corruptos pueden lanzar o devolver payloads con warnings según la ruta.
Relación con otros paquetes
| Paquete | Uso desde Node |
|---------|----------------|
| @dragon708/docmind-shared | Tipos y detectFileKind |
| @dragon708/docmind-markdown | extractMarkdown, render LLM, chunks, conversión binaria a Markdown en Node |
| @dragon708/docmind-pdf | PDF nativo, PDF.js, formularios, pipeline OCR |
| @dragon708/docmind-docx | Mammoth + extractores OOXML |
| @dragon708/docmind-ocr | Tesseract, TIFF, preprocesado |
En navegador usa @dragon708/docmind-browser (sin PDF completo ni conversión binaria pesada a Markdown en el cliente).
Seguridad
- No ejecutes
convertToHtml/ Markdown sobre documentos no confiables sin sanitizar antes de insertar en DOM. - PDF y DOCX pueden contener recursos remotos según opciones de conversión.
Licencia
MIT (monorepo DocMind).
