كيفية استخراج النص من ملفات OneNote في Python
Microsoft OneNote .one الملفات هي وثائق ثنائية لا يمكن قراءتها كالنص السلس أو مرفقة مع أدوات XML العامة. Aspose.Note FOSS for Python يوفر مكتب PYTHON النقي الذي يحمل .one ملفات في نموذج كامل من مستندات الكائن (DOM) ، مما يجعل من السهل استخراج النص ، وتصميم البيانات الميتا ، والروابط الهيربرمجية برامج.
فوائد استخدام Aspose.Note FOSS لـ Python
- لا يوجد Microsoft Office مطلوب: قراءة
.oneالملفات على أي منصة، بما في ذلك خوادم Linux CI/CD - النص الكامل والوصول إلى التنسيق: النص المسطح ، والخطوط الجريئة / الإيطالية / تحت الخط ، وخصائص الخطوط ، وعناوين URL الارتباط
- مجانا ومفتوحا المصدر: ترخيص MIT ، لا رسوم الاستخدام أو مفتاح API
خطوة بخطوة دليل
الخطوة 1: تثبيت Aspose.Note FOSS لـ Python
تثبيت المكتبة من PyPI. لا يوجد حزمة أساسية إلزامية:
pip install aspose-noteتحقق من التثبيت :
from aspose.note import Document
print("Installation OK")الخطوة 2: تحميل ملف .1
خلق أ Document مثال من خلال عبور مسار الملفات:
from aspose.note import Document
doc = Document("MyNotes.one")
print(f"Section: {doc.DisplayName}")
print(f"Pages: {len(list(doc))}")تحميل من تدفق ثنائي (على سبيل المثال، من التخزين السحابي أو استجابة HTTP):
from aspose.note import Document
with open("MyNotes.one", "rb") as f:
doc = Document(f)الخطوة 3: استخراج النص الكامل
استخدام GetChildNodes(RichText) لجمع كل RichText هذا يقوم بإجراء البحث العميق في البداية عبر جميع الصفحات والخطوط الناتجة عن الخطوط والنقاط:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
texts = [rt.Text for rt in doc.GetChildNodes(RichText) if rt.Text]
for text in texts:
print(text)لتخزين النص المستخرج إلى ملف:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
texts = [rt.Text for rt in doc.GetChildNodes(RichText) if rt.Text]
with open("extracted_text.txt", "w", encoding="utf-8") as out:
out.write("\n".join(texts))
print(f"Wrote {len(texts)} text blocks to extracted_text.txt")الخطوة 4: فحص السباقات المنسدلة
كل واحد منهم RichText يحتوي النود على A 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
attrs = []
if style.IsBold: attrs.append("bold")
if style.IsItalic: attrs.append("italic")
if style.IsUnderline: attrs.append("underline")
if style.IsStrikethrough: attrs.append("strikethrough")
if style.FontName: attrs.append(f"font={style.FontName}")
if style.FontSize: attrs.append(f"size={style.FontSize}pt")
label = ", ".join(attrs) if attrs else "plain"
print(f"[{label}] {run.Text!r}")الخطوة 5: استخراج الروابط الهرمونية
يتم تخزين الروابط الفردية على TextRun الوسوم - التحقق Style.IsHyperlink و اقرأ Style.HyperlinkAddress:
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"Link text: {run.Text!r}")
print(f"URL: {run.Style.HyperlinkAddress}")الخطوة 6: استخراج النص لكل صفحة
استخراج النص المنظم حسب عنوان الصفحة:
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)مشكلات و تصحيحات مشتركة
1. ImportError: No module named ‘aspose’
سبب: لا يتم تثبيت الحزمة في بيئة Python النشطة.
تصحيح:
pip install aspose-note
##Confirm active environment:
pip show aspose-note2. FileNotFoundError when loading .one file
سبب: مسار الملف غير صحيح أو لا يوجد ملف.
تصحيح: استخدم مسارًا مطلقًّا أو تحقق من وجود الملف قبل تحميل:
from pathlib import Path
from aspose.note import Document
path = Path("MyNotes.one")
if not path.exists():
raise FileNotFoundError(f"File not found: {path.resolve()}")
doc = Document(str(path))3. UnicodeEncodeError on Windows when printing
سبب: قد تستخدم محطات Windows رمز التراث الذي لا يستطيع تقديم حرف Unicode.
تصحيح: إعادة تثبيت stdout في بداية السيناريو:
import sys
if hasattr(sys.stdout, "reconfigure"):
sys.stdout.reconfigure(encoding="utf-8", errors="replace")4. Empty text results
سبب: من .one قد يكون الملف فارغًا ، يحتوي فقط على صور أو لوحات (لا يوجد عقدة RichText) ، أو هو ملف الكمبيوتر المحمول (.onetoc2(أو في حالة عدم وجود صفحة من الصفحات).one).
تصحيح: تحقق من عدد الصفحة والتحقق مماثلة النقاط:
from aspose.note import Document
doc = Document("MyNotes.one")
print(f"Pages: {len(list(doc))}")
for page in doc:
print(f" Children: {sum(1 for _ in page)}")5. IncorrectPasswordException
سبب: من .one الملفات المشفرة.المستندات المعروضة غير مدعومة.
تصحيح: Aspose.Note FOSS for Python لا يدعم التشفير .one الملفات. المنتج التجاري Aspose.Note متوفر بالكامل يدعم التشفير.
الأسئلة المتكررة
هل يمكنني استخراج النص من جميع الصفحات في وقت واحد؟?
نعم . doc.GetChildNodes(RichText) البحث عن الشجرة المستندة بأكملها مرارا وتكرارا، بما في ذلك جميع الصفحات والخطوط النطاقية وعناصر الخطوط.
هل يدعم المكتبة ملفات الكمبيوتر المحمول .netoc2؟?
لا، مكتبة تتعامل معها. .one أضف تعليق حول: ملفات اللوحة (.onetoc2( ) هي تنسيق مختلف ولا تدعم.
هل يمكنني استخراج النص من اللوحات؟?
نعم . TableCell النواة تحتوي على RichText الأطفال الذين يمكن قراءتهم بنفس الطريقة:
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):
for cell in row.GetChildNodes(TableCell):
cell_text = " ".join(rt.Text for rt in cell.GetChildNodes(RichText)).strip()
print(cell_text, end="\t")
print()ما هي الإصدارات التي تدعمها Python؟?
Python 3.10 و3.11 و312 .
هل المكتبة آمنة؟?
كل واحد منهم Document يجب استخدام المثال من شريط واحد.لإخراج متوازي، إنشاء منفصل Document بواسطة thread.
الموارد ذات الصلة :