Python का उपयोग करके OneNote फ़ाइलों से टेक्स्ट निकालें

यदि आपको Microsoft OneNote से पाठ पढ़ने की आवश्यकता है .one फ़ाइलों को एक Python स्क्रिप्ट में, Microsoft Office स्थापित किए बिना या Windows चलाए बिना, Aspose.Note FOSS for Python समाधान यही है। यह एक 100% मुफ्त, ओपन-सोर्स लाइब्रेरी है जो OneNote बाइनरी फ़ॉर्मेट को सीधे पार्स करती है और एक साफ़ Python API प्रदान करती है।.

इंस्टॉल करें

pip install aspose-note

कोई API कुंजी नहीं। कोई लाइसेंस फ़ाइल नहीं। कोई Microsoft Office नहीं।.


सबसे सरल तरीका: GetChildNodes(RichText)

OneNote पाठ संग्रहीत होता है RichText पृष्ठों, रूपरेखाओं और रूपरेखा तत्वों में वितरित नोड्स में।. GetChildNodes(RichText) पूरे दस्तावेज़ वृक्ष की पुनरावर्ती खोज करता है और प्रत्येक पाठ नोड को एक सपाट सूची के रूप में लौटाता है:

from aspose.note import Document, RichText

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

यह सभी पाठ सामग्री को निकालने का सबसे तेज़ तरीका है .one फ़ाइल से।.


टेक्स्ट को फ़ाइल में सहेजें

from aspose.note import Document, RichText

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"Saved {len(lines)} text blocks to extracted.txt")

प्रति पृष्ठ टेक्स्ट निकालें

जब आपको यह जानने की आवश्यकता हो कि प्रत्येक टेक्स्ट ब्लॉक किस पृष्ठ से आया है:

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)"
    )
    page_texts = [rt.Text for rt in page.GetChildNodes(RichText) if rt.Text]
    print(f"\n=== {title} ===")
    for text in page_texts:
        print(text)

हाइपरलिंक्स निकालें

हाइपरलिंक्स व्यक्तिगत TextRun ऑब्जेक्ट्स के भीतर RichText नोड्स में। जाँचें run.Style.IsHyperlink:

from aspose.note import Document, RichText

doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
    for run in rt.Runs:
        if run.Style.IsHyperlink and run.Style.HyperlinkAddress:
            print(f"{run.Text!r}  ->  {run.Style.HyperlinkAddress}")

फ़ॉर्मेटिंग का पता लगाएँ: बोल्ड, इटैलिक, अंडरलाइन

प्रत्येक TextRun अपने … के माध्यम से प्रति-अक्षर स्वरूपण ले जाता है TextStyle:

from aspose.note import Document, RichText

doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
    for run in rt.Runs:
        s = run.Style
        if any([s.Bold, s.Italic, s.Underline]):
            flags = ", ".join(f for f, v in [
                ("bold", s.Bold), ("italic", s.Italic), ("underline", s.Underline)
            ] if v)
            print(f"[{flags}] {run.Text.strip()!r}")

स्ट्रीम से पढ़ें

क्लाउड स्टोरेज, HTTP रिस्पॉन्स बॉडीज़, या इन‑मेमोरी बफ़र्स के साथ काम करता है:

import io, urllib.request
from aspose.note import Document, RichText

##Example: load from bytes already in memory
one_bytes = open("MyNotes.one", "rb").read()
doc = Document(io.BytesIO(one_bytes))
texts = [rt.Text for rt in doc.GetChildNodes(RichText) if rt.Text]
print(f"Extracted {len(texts)} text block(s)")

विंडोज एन्कोडिंग फ़िक्स

विंडोज टर्मिनलों पर, sys.stdout लेगेसी एन्कोडिंग का उपयोग कर सकता है जो यूनिकोड अक्षरों पर क्रैश हो जाता है। अपने स्क्रिप्ट की शुरुआत में यह जोड़ें:

import sys
if hasattr(sys.stdout, "reconfigure"):
    sys.stdout.reconfigure(encoding="utf-8", errors="replace")

लाइब्रेरी क्या समर्थन करती है

फ़ीचरसमर्थित
पढ़ें .one फ़ाइलें (पथ या स्ट्रीम)हाँ
निकालें RichText.Text (सादा पाठ)हाँ
निरीक्षण करें TextRun.Style (बोल्ड, इटैलिक, हाइपरलिंक, फ़ॉन्ट)हाँ
टेबल कोशिकाओं से टेक्स्ट निकालेंहाँ
पृष्ठ शीर्षक पढ़ेंहाँ
वापस लिखें .oneनहीं
एन्क्रिप्टेड दस्तावेज़नहीं

अगले कदम