टेक्स्ट एक्सट्रैक्शन — Aspose.Note FOSS 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}")

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 चाइल्ड। नेस्टेड का उपयोग करें 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 खोजता है पूरा tree जिसमें सभी पृष्ठ, outlines, और outline elements शामिल हैं। इसे किसी विशिष्ट पर कॉल करें Page स्कोप को सीमित करने के लिए।.
  • हमेशा जाँचें rt.Text (या if rt.Text:) प्रिंट करने से पहले, क्योंकि खाली RichText नोड्स कुछ दस्तावेज़ों में मौजूद होते हैं।.
  • Windows पर, पुनः कॉन्फ़िगर करें sys.stdout UTF-8 पर ताकि बचा सकें UnicodeEncodeError जब सिस्टम कोड पेज के बाहर के अक्षर प्रिंट किए जाते हैं।.
  • TextRun केवल है Text और Style फ़ील्ड्स। कोई नहीं है Start/End ऑफ़सेट प्रॉपर्टीज़; पैरेंट के भीतर रन के टेक्स्ट को खोजने के लिए RichText.Text, खोजें run.Text के भीतर rt.Text हाथ से।.

See Also

 हिन्दी