Ekstraksi Teks — Aspose.Note FOSS untuk Python
Aspose.Note FOSS for Python exposes the full text content of every OneNote page through the RichText node. Setiap RichText menyimpan keduanya, teks biasa .Text string dan sebuah .TextRuns daftar segmen yang masing-masing bergaya TextRun segmen. Halaman ini mendokumentasikan setiap pola ekstraksi teks yang tersedia.
Ekstrak Semua Teks Polos
Cara tercepat untuk mendapatkan semua teks dari sebuah dokumen adalah GetChildNodes(RichText), yang melakukan penelusuran rekursif depth-first di seluruh DOM:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)Kumpulkan ke dalam daftar dan gabungkan:
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
)Ekstrak Teks Per Halaman
Atur teks yang diekstrak berdasarkan judul halaman:
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)Periksa Run Pemformatan
RichText.TextRuns adalah daftar TextRun objek. Setiap run mencakup rentang karakter yang berurutan dengan 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}")Referensi Properti TextStyle
| Properti | Tipe | Deskripsi |
|---|---|---|
IsBold | bool | Teks tebal |
IsItalic | bool | Teks miring |
IsUnderline | bool | Teks bergaris bawah |
IsStrikethrough | bool | Teks coret |
IsSuperscript | bool | Superskrip |
IsSubscript | bool | Subskrip |
FontName | `str | None` |
FontSize | `float | None` |
FontColor | `int | None` |
Highlight | `int | None` |
Language | `int | None` |
IsHyperlink | bool | Apakah run ini merupakan hyperlink |
HyperlinkAddress | `str | None` |
Ekstrak Tautan Hiper
Hyperlink disimpan pada TextRun tingkat. Periksa 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}")Ekstrak Teks Tebal dan Disorot
Filter run berdasarkan properti pemformatan untuk mengisolasi konten tertentu:
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}")Ekstrak Teks dari Blok Judul
Judul halaman adalah RichText node di dalam Title objek. Mereka tidak dikembalikan oleh tingkat atas GetChildNodes(RichText) di halaman kecuali Anda menyertakan Title subtree. Akses mereka secara langsung:
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)Ekstrak Teks dari Tabel
Sel tabel berisi RichText anak. Gunakan bersarang GetChildNodes memanggil:
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)Operasi Teks dalam Memori
Ganti teks
RichText.Replace(old_value, new_value) mengganti teks dalam memori di semua eksekusi:
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 supportedTambahkan sebuah run teks
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 exampleSimpan Teks yang Diekstrak ke File
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)pada sebuahDocumentmencari seluruh pohon yang mencakup semua halaman, outline, dan elemen outline. Panggil pada spesifikPageuntuk membatasi ruang lingkup.- Selalu periksa
rt.Text(atauif rt.Text:) sebelum mencetak, karena kosongRichTextnode ada di beberapa dokumen. - Di Windows, konfigurasikan ulang
sys.stdoutke UTF-8 untuk menghindariUnicodeEncodeErrorsaat mencetak karakter di luar halaman kode sistem. TextRunhanya memilikiTextdanStylefield. Tidak adaStart/Endproperti offset; untuk menemukan teks run dalam indukRichText.Text, carirun.Textdi dalamrt.Textsecara manual.