Izvuci tekst iz OneNote fajlova koristeći Python
Ako trebate da čitate tekst iz Microsoft OneNote .one datoteke u Python skripti, bez instaliranja Microsoft Office-a ili pokretanja Windows-a, Aspose.Note FOSS for Python je rešenje. To je 100% besplatna, open‑source biblioteka koja direktno parsira OneNote binarni format i izlaže čist Python API.
Instaliraj
pip install aspose-note
Nema API ključa. Nema licence fajla. Nema Microsoft Office-a.
Najjednostavniji pristup: GetChildNodes(RichText)
OneNote tekst se čuva u RichText čvorovima raspoređenim po stranicama, konturama i elementima konture. GetChildNodes(RichText) izvršava rekurzivno pretraživanje celog 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.
Sačuvajte tekst u fajl
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")
Izvucite tekst po stranici
Kada treba da znate sa 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 čuvaju na pojedinačnim TextRun objektima unutar RichText čvorovima. Proverite 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}")
Detektujte formatiranje: podebljano, kurziv, podvučeno
Svaki TextRun prenosi formatiranje po karakteru 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}")
Čitanje iz toka
Radi sa cloud storage, HTTP telima odgovora ili memorijskim baferima:
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)")
Ispravka kodiranja za Windows
Na Windows terminalima, sys.stdout može koristiti staru kodnu tabelu koja se ruši na Unicode karakterima. Dodajte ovo na početak vašeg skripta:
import sys
if hasattr(sys.stdout, "reconfigure"):
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
Šta biblioteka podržava
| Funkcija | Podržano |
|---|---|
Čitanje .one datoteke (putanja ili tok) | Da |
Izvuci RichText.Text (običan tekst) | Da |
Pregledaj TextRun.Style (podebljano, kurziv, hiperveza, font) | Da |
| Izvuci tekst iz ćelija tabele | Da |
| Pročitaj naslove stranica | Da |
Zapiši nazad u .one | Ne |
| Šifrovani dokumenti | Ne |