Εξαγωγή Κειμένου — 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 αντικείμενο. Δεν επιστρέφονται από ένα top-level 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 αναζητά το ολόκληρο δέντρο που περιλαμβάνει όλες τις σελίδες, τα περιγράμματα και τα στοιχεία του περιγράμματος. Κλήστε το σε ένα συγκεκριμένο Page για περιορισμό του πεδίου.
  • Πάντα ελέγξτε rt.Textif rt.Text:) πριν από την εκτύπωση, καθώς κενά RichText κόμβοι υπάρχουν σε ορισμένα έγγραφα.
  • Στα Windows, επαναρυθμίστε sys.stdout σε UTF-8 για να αποφύγετε UnicodeEncodeError κατά την εκτύπωση χαρακτήρων εκτός της κωδικοσελίδας του συστήματος.
  • TextRun έχει μόνο Text και Style πεδία. Δεν υπάρχουν Start/End ιδιότητες offset· για να εντοπίσετε το κείμενο μιας εκτέλεσης μέσα στον γονέα RichText.Text, αναζητήστε το run.Text μέσα στο rt.Text χειροκίνητα.

Δείτε επίσης

 Ελληνικά