استخراج النص – 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}")نص الممتلكات النصية
| الممتلكات | نوع | وصف |
|---|---|---|
IsBold | bool | نص شجاع |
IsItalic | bool | النص الإيطالي |
IsUnderline | bool | النص المنسوب |
IsStrikethrough | bool | نص صارم |
IsSuperscript | bool | السوبركريبت |
IsSubscript | bool | الوسوم |
FontName | `str | None` |
FontSize | `float | None` |
FontColor | `int | None` |
Highlight | `int | None` |
Language | `int | None` |
IsHyperlink | bool | هل هذا الإجراء هو hyperlink |
HyperlinkAddress | `str | None` |
استخراج 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يدوياً .