Tekstextractie — Aspose.Note FOSS voor Python
Aspose.Note FOSS for Python exposes the full text content of every OneNote page through the RichText node. Elke RichText bevat zowel een platte-tekst .Text string en een .TextRuns lijst van individueel gestylede TextRun segmenten. Deze pagina documenteert elk beschikbaar tekst-extractiepatroon.
Alle platte tekst extraheren
De snelste manier om alle tekst uit een document te halen is GetChildNodes(RichText), die een recursieve diepte-eerst doorloop over de volledige DOM uitvoert:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)Verzamel in een lijst en voeg samen:
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
)Tekst per pagina extraheren
Organiseer de geëxtraheerde tekst op paginatitel:
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)Inspecteer opmaakruns
RichText.TextRuns is een lijst van TextRun objecten. Elke run beslaat een aaneengesloten bereik van tekens met een uniforme 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}")Referentie van TextStyle‑eigenschappen
| Eigenschap | Type | Beschrijving |
|---|---|---|
IsBold | bool | Vetgedrukte tekst |
IsItalic | bool | Cursieve tekst |
IsUnderline | bool | Onderstreepte tekst |
IsStrikethrough | bool | Doorgehaalde tekst |
IsSuperscript | bool | Superscript |
IsSubscript | bool | Subscript |
FontName | `str | None` |
FontSize | `float | None` |
FontColor | `int | None` |
Highlight | `int | None` |
Language | `int | None` |
IsHyperlink | bool | Of deze run een hyperlink is |
HyperlinkAddress | `str | None` |
Hyperlinks extraheren
Hyperlinks worden opgeslagen op het TextRun niveau. Controleer 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}")Vette en gemarkeerde tekst extraheren
Filter runs op opmaak‑eigenschappen om specifieke inhoud te isoleren:
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}")Tekst uit titelblokken extraheren
Paginatitels zijn RichText knooppunten binnen de Title object. Ze worden niet geretourneerd door een top‑level GetChildNodes(RichText) op de pagina tenzij je de Title subboom. Toegang er direct tot:
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)Tekst uit tabellen extraheren
Tabelcellen bevatten RichText kinderen. Gebruik geneste GetChildNodes aanroepen:
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)In-Memory-tekstbewerkingen
Tekst vervangen
RichText.Replace(old_value, new_value) vervangt tekst in het geheugen bij alle runs:
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 supportedEen tekst-run toevoegen
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 exampleGeëxtraheerde tekst opslaan naar bestand
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.")Tips
GetChildNodes(RichText)op eenDocumentdoorzoekt de hele tree inclusief alle pagina’s, outlines en outline‑elementen. Roep het aan op een specifiekePageom de scope te beperken.- Controleer altijd
rt.Text(ofif rt.Text:) vóór het afdrukken, omdat leegRichTextknooppunten bestaan in sommige documenten. - Op Windows, herconfigureer
sys.stdoutnaar UTF-8 om te voorkomenUnicodeEncodeErrorbij het afdrukken van tekens buiten de systeem‑codepagina. TextRunheeft alleenTextenStylevelden. Er zijn geenStart/Endoffset‑eigenschappen; om de tekst van een run binnen de bovenliggendeRichText.Text, zoek naarrun.Textbinnenrt.Texthandmatig.