Metin Çıkarma — Aspose.Note FOSS for Python

Aspose.Note FOSS for Python exposes the full text content of every OneNote page through the RichText node. Her RichText hem düz metin .Text dize ve bir .TextRuns bireysel olarak stillendirilmiş bir liste TextRun segmentler. Bu sayfa, mevcut tüm metin çıkarma desenlerini belgelendirir.


Tüm Düz Metni Çıkar

Bir belgeden tüm metni almanın en hızlı yolu GetChildNodes(RichText), ki tüm DOM üzerinde özyinelemeli derinlik öncelikli bir geçiş gerçekleştirir:

from aspose.note import Document, RichText

doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
    if rt.Text:
        print(rt.Text)

Bir listeye topla ve birleştir:

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
)

Sayfa Başına Metin Çıkar

Çıkarılan metni sayfa başlığına göre düzenle:

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)

Biçimlendirme Çalışmalarını İncele

RichText.TextRuns bir listedir TextRun nesneler. Her çalıştırma, tutarlı bir 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}")

TextStyle Özellik Referansı

ÖzellikTürAçıklama
IsBoldboolKalın metin
IsItalicboolİtalik metin
IsUnderlineboolAltı çizili metin
IsStrikethroughboolÜstü çizili metin
IsSuperscriptboolÜst simge
IsSubscriptboolAlt simge
FontName`strNone`
FontSize`floatNone`
FontColor`intNone`
Highlight`intNone`
Language`intNone`
IsHyperlinkboolBu çalışmanın bir köprü olup olmadığı
HyperlinkAddress`strNone`

Köprüleri Çıkar

Köprüler şurada depolanır TextRun seviye. Kontrol et 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}")

Kalın ve Vurgulanan Metni Çıkar

Belirli içeriği izole etmek için çalışmaları biçimlendirme özelliklerine göre filtrele:

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}")

Başlık Bloklarından Metin Çıkar

Sayfa başlıkları RichText içindeki düğümler Title nesne. Bunlar üst düzey bir GetChildNodes(RichText) sayfada, ancak dahil etmezseniz Title alt ağaç. Onlara doğrudan erişin:

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)

Tablolardan Metin Çıkar

Tablo hücreleri içerir RichText çocukları. İç içe kullanın GetChildNodes çağrılar:

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)

Bellek İçi Metin İşlemleri

Metni değiştir

RichText.Replace(old_value, new_value) tüm çalıştırmalarda bellek içinde metni değiştirir:

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 supported

Bir metin run’ı ekle

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 example

Çıkarılan Metni Dosyaya Kaydet

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.")

İpuçları

  • GetChildNodes(RichText) bir Document arıyor tüm tüm sayfaları, anahatları ve anahat öğelerini içeren ağaç. Belirli bir Page kapsamı sınırlamak için.
  • Her zaman kontrol edin rt.Text (veya if rt.Text:) RichText düğümler bazı belgelerde bulunur.
  • Windows’ta, yeniden yapılandırın sys.stdout UTF-8’e, önlemek için UnicodeEncodeError sistem kod sayfasının dışındaki karakterleri yazdırırken.
  • TextRun sadece Text ve Style alanlar. Yok Start/End ofset özellikleri; bir çalıştırmanın metnini üst öğe içinde bulmak için RichText.Text, run.Text içinde rt.Text manuel olarak.

Ayrıca Bakınız

 Türkçe