استخراج النص – Aspose.Note FOSS for Python

Aspose.Note FOSS for Python exposes the full text content of every OneNote page through the RichText كل واحد .كل واحد 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}")

نص الممتلكات النصية

الممتلكاتنوعوصف
IsBoldboolنص شجاع
IsItalicboolالنص الإيطالي
IsUnderlineboolالنص المنسوب
IsStrikethroughboolنص صارم
IsSuperscriptboolالسوبركريبت
IsSubscriptboolالوسوم
FontName`strNone`
FontSize`floatNone`
FontColor`intNone`
Highlight`intNone`
Language`intNone`
IsHyperlinkboolهل هذا الإجراء هو hyperlink
HyperlinkAddress`strNone`

استخراج hyperlinks

يتم تخزين الروابط الهرمونية في 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 الأطفال: استخدام السترات 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

إضافة نصيحة إلى 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 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 البحث عن The كاملة الشجرة بما في ذلك جميع الصفحات، والخطوط، وعناصر الخطوط.دعها على محدد Page الحد من نطاقها.
  • دائما التحقق rt.Text (أو if rt.Text:قبل الطباعة، كما هو فارغ. RichText هناك بعض الأقواس في بعض الوثائق.
  • في ويندوز، إعادة تثبيت sys.stdout إلخ 8 لتجنب UnicodeEncodeError عند طباعة الأحرف خارج صفحة رمز النظام.
  • TextRun لا يوجد سوى Text و Style الميدان لا يوجد Start/End خصم الخصومات؛ لتحديد نص الجولة داخل الوالد RichText.Text,البحث عن run.Text داخلها rt.Text يدوياً .

انظر أيضا

 العربية