Skip to content

Extrair texto de documentos Office

Office Oxide oferece um único ponto de entrada — extract_text() (ou Document.open(...).plain_text()) — que funciona da mesma forma para DOCX, XLSX, PPTX, DOC, XLS e PPT. Sem código específico por formato.

Helper de chamada única

O caminho mais rápido: uma única chamada de função abre o arquivo, executa o extrator adequado ao formato e retorna uma string.

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 reutilizável

Se você precisa de texto e também de outras saídas (Markdown, HTML, IR), abra o documento uma vez e reutilize o 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);

O que você obtém por formato

Formato Saída
DOCX Texto do corpo na ordem do documento + cabeçalhos e rodapés; hífens suaves removidos
XLSX Valores de células em todas as planilhas, separados por tab na linha, linha em branco entre planilhas
PPTX Título do slide, placeholders de corpo, células de tabela e notas — um bloco por slide
DOC Mesma estrutura do DOCX — parse direto da piece-table do CFB
XLS Mesma estrutura do XLSX — parse direto dos registros BIFF8
PPT Mesma estrutura do PPTX — parse a partir do stream PowerPoint Document

A partir de bytes (sem arquivo temporário)

Útil em pipelines serverless e 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());

Performance

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

Veja a metodologia completa em Performance.

Veja também