Izvuci tekst iz OneNote datoteka pomoću Python

Ako trebate čitati tekst iz Microsoft OneNotea .one datoteke u Python skripti, bez instaliranja Microsoft Officea ili pokretanja Windowsa, Aspose.Note FOSS for Python je rješenje. To je 100 % besplatna, open‑source biblioteka koja izravno parsira OneNote binarni format i izlaže čist Python API.

Instaliraj

pip install aspose-note

Nema API ključa. Nema licence. Nema Microsoft Officea.


Najjednostavniji pristup: GetChildNodes(RichText)

OneNote tekst se pohranjuje u RichText čvorove raspoređene po stranicama, konturama i elementima konture. GetChildNodes(RichText) izvršava rekurzivno pretraživanje cijelog stabla dokumenta i vraća svaki tekstualni čvor kao ravnu listu:

from aspose.note import Document, RichText

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

Ovo je najbrži način da izvučete sav tekstualni sadržaj iz .one datoteke.


Spremi tekst u datoteku

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

Izvuci tekst po stranici

Kada trebate znati s koje je stranice svaki blok teksta potekao:

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)

Izvuci hiperveze

Hiperveze se pohranjuju na pojedinačne TextRun objekte unutar RichText čvorova. Provjerite 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}")

Otkrivanje formatiranja: podebljano, kurziv, podcrtano

Svaki TextRun nositi formatiranje po znaku kroz svoj 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}")

Čitaj iz streama

Radi s cloud pohranom, HTTP tijelima odgovora ili memorijskim spremnicima:

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

Popravak kodiranja za Windows

Na Windows terminalima, sys.stdout mogu koristiti staru kodnu stranicu koja se ruši na Unicode znakovima. Dodajte ovo na početak vaše skripte:

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

Što biblioteka podržava

ZnačajkaPodržano
Čitanje .one datoteke (putanja ili tok)Da
Izvuci RichText.Text (obični tekst)Da
Pregledaj TextRun.Style (podebljano, kurziv, hiperveza, font)Da
Izvuci tekst iz ćelija tabliceDa
Čitaj naslove stranicaDa
Zapiši natrag u .oneNe
Šifrirani dokumentiNe

Sljedeći koraci