Ekstrakcija teksta — Aspose.Note FOSS za Python
Aspose.Note FOSS for Python exposes the full text content of every OneNote page through the RichText čvor. Svaki RichText sadrži i običan tekst .Text string i .TextRuns listu pojedinačno stilizovanih TextRun segmenata. Ova stranica dokumentuje svaki dostupni obrazac za izdvajanje teksta.
Izvuci sav običan tekst
Najbrži način da se dobije sav tekst iz dokumenta je GetChildNodes(RichText), koji izvršava rekurzivno pretraživanje u dubinu kroz čitav DOM:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)Sakupite u listu i spojite:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
all_text = "\n".join(
rt.Text for rt in doc.GetChildNodes(RichText) if rt.Text
)Izvuci tekst po stranici
Organizujte izvučeni tekst po naslovu stranice:
from aspose.note import Document, Page, RichText
doc = Document("MyNotes.one")
for page in doc.GetChildNodes(Page):
title = (
page.Title.TitleText.Text
if page.Title and page.Title.TitleText
else "(untitled)"
)
print(f"\n=== {title} ===")
for rt in page.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)Pregledajte formate
RichText.TextRuns je lista od TextRun objekata. Svaki niz pokriva uzastopni opseg znakova sa uniformnim TextStyle:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
for run in rt.TextRuns:
style = run.Style
parts = []
if style.IsBold: parts.append("bold")
if style.IsItalic: parts.append("italic")
if style.IsUnderline: parts.append("underline")
if style.IsStrikethrough: parts.append("strikethrough")
if style.IsSuperscript: parts.append("superscript")
if style.IsSubscript: parts.append("subscript")
if style.FontName: parts.append(f"font={style.FontName!r}")
if style.FontSize: parts.append(f"size={style.FontSize}pt")
label = ", ".join(parts) if parts else "plain"
print(f"[{label}] {run.Text!r}")Referenca svojstva TextStyle
| Svojstvo | Tip | Opis |
|---|---|---|
IsBold | bool | Podebljan tekst |
IsItalic | bool | Kurzivni tekst |
IsUnderline | bool | Podvučen tekst |
IsStrikethrough | bool | Precrtani tekst |
IsSuperscript | bool | Gornji indeks |
IsSubscript | bool | Donji indeks |
FontName | `str | None` |
FontSize | `float | None` |
FontColor | `int | None` |
Highlight | `int | None` |
Language | `int | None` |
IsHyperlink | bool | Da li je ovaj segment hiperveza |
HyperlinkAddress | `str | None` |
Izvuci hiperveze
Hyperlinks se čuvaju na TextRun nivou. Proverite Style.IsHyperlink:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
for run in rt.TextRuns:
if run.Style.IsHyperlink and run.Style.HyperlinkAddress:
print(f" {run.Text!r:40s} -> {run.Style.HyperlinkAddress}")Izvuci podebljani i istaknuti tekst
Filtrirajte segmente po svojstvima formatiranja da izolujete određeni sadržaj:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
print("=== Bold segments ===")
for rt in doc.GetChildNodes(RichText):
for run in rt.TextRuns:
if run.Style.IsBold and run.Text.strip():
print(f" {run.Text.strip()!r}")
print("\n=== Highlighted segments ===")
for rt in doc.GetChildNodes(RichText):
for run in rt.TextRuns:
if run.Style.Highlight is not None and run.Text.strip():
color = f"#{run.Style.Highlight & 0xFFFFFF:06X}"
print(f" [{color}] {run.Text.strip()!r}")Izvuci tekst iz naslova blokova
Naslovi stranica su RichText čvorovi unutar Title objekta. Oni se ne vraćaju putem top-level GetChildNodes(RichText) na stranici, osim ako ne uključite Title podstablo. Pristupite im direktno:
from aspose.note import Document, Page
doc = Document("MyNotes.one")
for page in doc.GetChildNodes(Page):
if page.Title:
if page.Title.TitleText:
print("Title text:", page.Title.TitleText.Text)
if page.Title.TitleDate:
print("Title date:", page.Title.TitleDate.Text)
if page.Title.TitleTime:
print("Title time:", page.Title.TitleTime.Text)Izvuci tekst iz tabela
Ćelije tabele sadrže RichText deca. Koristite ugnježdene GetChildNodes pozive:
from aspose.note import Document, Table, TableRow, TableCell, RichText
doc = Document("MyNotes.one")
for table in doc.GetChildNodes(Table):
for row in table.GetChildNodes(TableRow):
row_values = []
for cell in row.GetChildNodes(TableCell):
cell_text = " ".join(
rt.Text for rt in cell.GetChildNodes(RichText)
).strip()
row_values.append(cell_text)
print(row_values)Operacije teksta u memoriji
Zameni tekst
RichText.Replace(old_value, new_value) zamenjuje tekst u memoriji kroz sve pokretanja:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
rt.Replace("TODO", "DONE")
##Changes are in-memory only; saving back to .one is not supportedDodaj tekstualni run
from aspose.note import Document, RichText, TextStyle
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
rt.Append(" [reviewed]") # appends with default style
break # just the first node in this exampleSačuvaj izvučeni tekst u fajl
import sys
from aspose.note import Document, RichText
if hasattr(sys.stdout, "reconfigure"):
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
doc = Document("MyNotes.one")
lines = [rt.Text for rt in doc.GetChildNodes(RichText) if rt.Text]
with open("extracted.txt", "w", encoding="utf-8") as f:
f.write("\n".join(lines))
print(f"Extracted {len(lines)} text blocks.")Saveti
GetChildNodes(RichText)naDocumentpretražuje celokupno stablo koje uključuje sve stranice, outline‑e i elemente outline‑a. Pozovite ga na određenomPageda ograniči opseg.- Uvek proverite
rt.Text(iliif rt.Text:) pre štampanja, pošto su prazniRichTextčvorovi postoje u nekim dokumentima. - Na Windowsu, rekonfigurišite
sys.stdoutna UTF-8 da biste izbegliUnicodeEncodeErrorprilikom štampanja znakova izvan sistemske kodne stranice. TextRunima samoTextiStylepolja. NemaStart/Endsvojstava pomaka; da biste locirali tekst sekvence unutar roditeljaRichText.Text, pretražiterun.Textunutarrt.Textručno.