Skip to content

Extraer texto de documentos Office

Office Oxide ofrece un único punto de entrada — extract_text() (o Document.open(...).plain_text()) — que funciona igual para DOCX, XLSX, PPTX, DOC, XLS y PPT. Sin rutas de código específicas por formato.

Helper de un solo uso

La forma más directa: una sola llamada a función abre el archivo, ejecuta el extractor adecuado al formato y devuelve una cadena.

Rust

use office_oxide::extract_text;

let text = extract_text("report.docx")?;
println!("{text}");

Python

import office_oxide

text = office_oxide.extract_text("report.docx")
print(text)

JavaScript

import { extractText } from 'office-oxide';

console.log(extractText('report.docx'));

Go

import officeoxide "github.com/yfedoseev/office_oxide/go"

text, err := officeoxide.ExtractText("report.docx")

C#

using OfficeOxide;

string text = OfficeOxide.ExtractText("report.docx");

C

int err = 0;
char *text = office_extract_text("report.docx", &err);
if (text) {
    printf("%s\n", text);
    office_oxide_free_string(text);
}

Handle reutilizable

Si necesitas el texto y también otras salidas (Markdown, HTML, IR), abre el documento una vez y reutiliza el handle:

Rust

use office_oxide::Document;

let doc = Document::open("report.docx")?;
let text = doc.plain_text();
let md   = doc.to_markdown();

Python

from office_oxide import Document

with Document.open("report.docx") as doc:
    text = doc.plain_text()
    md   = doc.to_markdown()

JavaScript

import { Document } from 'office-oxide';

using doc = Document.open('report.docx');
const text = doc.plainText();
const md   = doc.toMarkdown();

C

int err = 0;
OfficeDocumentHandle *doc = office_document_open("report.docx", &err);
if (!doc) { fprintf(stderr, "open failed: code=%d\n", err); return 1; }

char *text = office_document_plain_text(doc, &err);
char *md   = office_document_to_markdown(doc, &err);
/* use text / md ... */
office_oxide_free_string(text);
office_oxide_free_string(md);
office_document_free(doc);

Qué obtienes por formato

Formato Salida
DOCX Texto del cuerpo en orden del documento + encabezados y pies de página; guiones suaves eliminados
XLSX Valores de celdas de todas las hojas, separados por tabulador dentro de la fila, línea en blanco entre hojas
PPTX Título de la diapositiva, marcadores de posición de cuerpo, celdas de tabla y notas — un bloque de párrafo por diapositiva
DOC Misma estructura que DOCX — parseado directamente desde la piece-table del CFB
XLS Misma estructura que XLSX — parseado directamente desde los registros BIFF8
PPT Misma estructura que PPTX — parseado desde el stream PowerPoint Document

Desde bytes (sin archivo temporal)

Útil en pipelines serverless y de streaming.

Rust

use std::io::Cursor;
use office_oxide::{Document, DocumentFormat};

let data = std::fs::read("report.docx")?;
let doc = Document::from_reader(Cursor::new(data), DocumentFormat::Docx)?;
let text = doc.plain_text();

Python

import requests
from office_oxide import Document

data = requests.get("https://example.com/report.docx").content
with Document.from_bytes(data, "docx") as doc:
    print(doc.plain_text())

JavaScript

import { Document } from 'office-oxide';

const res = await fetch('https://example.com/report.docx');
const data = new Uint8Array(await res.arrayBuffer());
using doc = Document.fromBytes(data, 'docx');
console.log(doc.plainText());

C

/* format must be one of: "docx" "xlsx" "pptx" "doc" "xls" "ppt" (lowercase) */
int err = 0;
OfficeDocumentHandle *doc =
    office_document_open_from_bytes(data, len, "docx", &err);
if (doc) {
    char *text = office_document_plain_text(doc, &err);
    if (text) { printf("%s\n", text); office_oxide_free_string(text); }
    office_document_free(doc);
}

WASM

import { WasmDocument } from 'office-oxide-wasm';

const res = await fetch('https://example.com/report.docx');
const data = new Uint8Array(await res.arrayBuffer());
using doc = new WasmDocument(data, 'docx');
console.log(doc.plainText());

Rendimiento

Formato Media p99 Tasa de éxito
DOCX (2.538 archivos) 0,8 ms 3,9 ms 98,9%
XLSX (1.802 archivos) 5,0 ms 40 ms 97,8%
PPTX (806 archivos) 0,7 ms 3,9 ms 98,4%
DOC (246 archivos) 0,3 ms 3,4 ms 94,7%
XLS (494 archivos) 2,8 ms 75 ms 99,2%
PPT (176 archivos) 0,7 ms 6,6 ms 100%

Consulta la metodología completa en Rendimiento.

Véase también