חילוץ טקסט — Aspose.Note FOSS עבור Python

Aspose.Note FOSS for Python exposes the full text content of every OneNote page through the RichText node. כל RichText מחזיק גם טקסט פשוט .Text מחרוזת ו .TextRuns רשימה של מעוצבים באופן אישי TextRun קטעים. דף זה מתעד כל תבנית זמינה לחילוץ טקסט.


הוצא את כל הטקסט הפשוט

הדרך המהירה ביותר לקבל את כל הטקסט ממסמך היא GetChildNodes(RichText), שמבצע מעבר רקורסיבי בעומק ראשון על פני כל ה‑DOM:

from aspose.note import Document, RichText

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

איסוף לרשימה וחיבור:

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
)

חילוץ טקסט לכל עמוד

ארגן את הטקסט המוחלץ לפי כותרת העמוד:

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)

בדיקת מקטעי עיצוב

RichText.TextRuns הוא רשימה של TextRun אובייקטים. כל ריצה מכסה טווח רציף של תווים עם אחידות 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

מאפייןסוגתיאור
IsBoldboolטקסט מודגש
IsItalicboolטקסט מוטה
IsUnderlineboolטקסט עם קו תחתי
IsStrikethroughboolטקסט עם קו חוצה
IsSuperscriptboolכתב עילי
IsSubscriptboolכתב תחתי
FontName`strNone`
FontSize`floatNone`
FontColor`intNone`
Highlight`intNone`
Language`intNone`
IsHyperlinkboolהאם ריצה זו היא קישור
HyperlinkAddress`strNone`

חילוץ קישורים

קישורים נשמרים ב TextRun רמה. בדוק 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}")

חילוץ טקסט מודגש ומסומן

סנן מקטעים לפי תכונות העיצוב כדי לבודד תוכן ספציפי:

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

חילוץ טקסט מחסמי הכותרת

כותרות העמוד הן RichText צמתים בתוך ה Title אובייקט. הם אינם מוחזרים ברמת על GetChildNodes(RichText) בדף אלא אם אתה כולל את ה Title תת‑עץ. גש אליהם ישירות:

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)

חילוץ טקסט מטבלאות

תאי טבלה מכילים RichText ילדים. השתמש ב‑nested GetChildNodes קריאות:

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)

פעולות טקסט בזיכרון

החלפת טקסט

RichText.Replace(old_value, new_value) מחליף טקסט בזיכרון בכל ההרצות:

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

הוספת רצף טקסט

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

שמירת הטקסט המופק לקובץ

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

טיפים

  • GetChildNodes(RichText) על Document מחפש את שלם עץ כולל את כל העמודים, המתארים ואלמנטים של המתאר. קרא לו על ספציפי Page כדי להגביל את ההיקף.
  • תמיד לבדוק rt.Text (או if rt.Text:) לפני ההדפסה, כיוון ריק RichText קיימים צמתים בחלק מהמסמכים.
  • ב-Windows, הגדר מחדש sys.stdout ל-UTF-8 כדי למנוע UnicodeEncodeError כאשר מדפיסים תווים מחוץ לדף הקוד של המערכת.
  • TextRun יש רק Text ו Style שדות. אין Start/End מאפייני היסט; כדי לאתר את הטקסט של ריצה בתוך ההורה RichText.Text, חפש את run.Text בתוך rt.Text בידנית.

ראה גם

 עברית