Ekstrakcija teksta — Aspose.Note FOSS for Python
Aspose.Note FOSS za Python izlaže puni tekstualni sadržaj svake OneNote stranice putem čvora RichText. Svaki RichText sadrži i obični tekstualni niz .Text i popis .TextRuns pojedinačno stiliziranih segmenata TextRun. Ova stranica dokumentira sve dostupne obrasce za izdvajanje teksta.
Izvuci sav običan tekst
Najbrži način za dobivanje cijelog teksta iz dokumenta je GetChildNodes(RichText), koji izvršava rekurzivno dubinsko prvo pretraživanje kroz cijeli DOM:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)Prikupi u listu i spoji:
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
Organizirajte izdvojeni 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)Pregledaj sekvence formatiranja
RichText.TextRuns je popis TextRun objekata. Svaki segment pokriva neprekidni raspon znakova s jedinstvenim 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 | Podebljani tekst |
IsItalic | bool | Kurzivni tekst |
IsUnderline | bool | Podvučeni tekst |
IsStrikethrough | bool | Precrtani tekst |
IsSuperscript | bool | Superskript |
IsSubscript | bool | Subskript |
FontName | str | None | Naziv obitelji fonta |
FontSize | float | None | Veličina fonta u točkama |
FontColor | int | None | Boja fonta kao ARGB cijeli broj |
Highlight | int | None | Boja pozadinskog isticanja kao ARGB cijeli broj |
Language | int | None | Identifikator jezika (LCID) |
IsHyperlink | bool | Je li ovaj segment hiperveza |
HyperlinkAddress | str | None | URL kada je IsHyperlink True |
Izvuci hiperveze
Hiperveze su pohranjene na razini TextRun. Provjerite 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 pokretanja prema svojstvima formatiranja kako biste izolirali 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 naslovnih blokova
Naslovi stranica su RichText čvorovi unutar objekta Title. Oni se ne vraćaju putem vršnog GetChildNodes(RichText) na stranici, osim ako ne uključite podstablo Title. Pristupite im izravno:
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)Izdvoji tekst iz tablica
Ćelije tablice sadrže RichText djecu. Koristite ugnijež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
Zamijeni tekst
RichText.Replace(old_value, new_value) zamjenjuje 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 segment
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 exampleSpremi izdvojeni tekst u datoteku
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.")Savjeti
GetChildNodes(RichText)naDocumentpretražuje cijelo stablo uključujući sve stranice, strukture i elemente strukture. Pozovite ga na određenomPagekako biste ograničili opseg.- Uvijek provjerite
rt.Text(iliif rt.Text:) prije ispisa, jer u nekim dokumentima postoje prazniRichTextčvorovi. - Na Windowsu, ponovno konfigurirajte
sys.stdoutna UTF-8 kako biste izbjegliUnicodeEncodeErrorpri ispisu znakova izvan sustavne kodne stranice. TextRunima samo poljaTextiStyle. Ne postoje svojstva pomakaStart/End; kako biste locirali tekst pokreta unutar nadređenogRichText.Text, ručno potražiterun.Textunutarrt.Text.