Extrahovanie textu — Aspose.Note FOSS pre Python
Aspose.Note FOSS for Python exposes the full text content of every OneNote page through the RichText uzol. Každý RichText obsahuje plain-text .Text reťazec a .TextRuns zoznam individuálne štýlovaných TextRun segmentov. Táto stránka dokumentuje všetky dostupné vzory extrakcie textu.
Extrahovať celý čistý text
Najrýchlejší spôsob, ako získať celý text z dokumentu, je GetChildNodes(RichText), ktorý vykonáva rekurzívne prehľadávanie do hĺbky naprieč celým DOM:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)Zozbierajte do zoznamu a spojte:
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
)Extrahovať text po stránkach
Usporiadajte extrahovaný text podľa názvu stránky:
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)Preskúmať formátovacie úseky
RichText.TextRuns je zoznam TextRun objektov. Každý úsek pokrýva súvislý rozsah znakov s jednotným 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}")Referenčný zoznam vlastností TextStyle
| Vlastnosť | Typ | Popis |
|---|---|---|
IsBold | bool | Tučný text |
IsItalic | bool | Kurzívny text |
IsUnderline | bool | Podčiarknutý text |
IsStrikethrough | bool | Prečiarknutý text |
IsSuperscript | bool | Horný index |
IsSubscript | bool | Dolný index |
FontName | `str | None` |
FontSize | `float | None` |
FontColor | `int | None` |
Highlight | `int | None` |
Language | `int | None` |
IsHyperlink | bool | Či je tento úsek hyperodkazom |
HyperlinkAddress | `str | None` |
Extrahovať hyperodkazy
Hyperlinky sú uložené na TextRun úrovni. Skontrolujte 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}")Extrahovať tučný a zvýraznený text
Filtrovať úseky podľa formátovacích vlastností na izolovanie konkrétneho obsahu:
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}")Extrahovať text z titulkových blokov
Názvy stránok sú RichText uzly v Title objekte. Nie sú vrátené na najvyššej úrovni GetChildNodes(RichText) na stránke, pokiaľ nezahrnete Title podstrom. Pristúpte k nim priamo:
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)Extrahovať text z tabuliek
Bunky tabuľky obsahujú RichText deti. Použite vnorené GetChildNodes volania:
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)Operácie s textom v pamäti
Nahradiť text
RichText.Replace(old_value, new_value) nahrádza text v pamäti naprieč všetkými spusteniami:
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 supportedPridať textový 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 exampleUložiť extrahovaný text do súboru
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.")Tipy
GetChildNodes(RichText)naDocumenthľadá celý strom vrátane všetkých stránok, osnov a prvkov osnovy. Zavolajte ho na konkrétnomPagena obmedzenie rozsahu.- Vždy skontrolujte
rt.Text(aleboif rt.Text:)RichTextuzly existujú v niektorých dokumentoch. - V systéme Windows prekonfigurujte
sys.stdoutna UTF-8, aby ste predišliUnicodeEncodeErrorpri tlači znakov mimo systémovej kódovej stránky. TextRunmá ibaTextaStylepolia. Neexistujú žiadneStart/Endvlastnosti offsetu; na lokalizáciu textu behu v rámci rodičaRichText.Text,run.Textv rámcirt.Textmanuálne.