بارگذاری اسناد¶
from persian_rag import load_documents, load_docx, load_pdf
documents = load_documents("./library")
تابع load_documents یک فایل یا یک پوشه می گیرد و فایل های متنی، مارک داون، HTML، PDF و Word را می خواند. فایل ها و پوشه های پنهان نادیده گرفته می شوند، از مارک داون فقط متن قابل دیدن می ماند و شناسه هر سند مسیر نسبی آن در پوشه است. سقف اندازه فایل متنی ۱۰ مگابایت و سقف PDF و Word پنجاه مگابایت است.
فایل های HTML با روش جدا کردن متن اصلی خوانده می شوند و فایل های مارک داون با split_sections=True به ازای هر عنوان یک سند جدا می سازند. جزئیات صفحه های وب، سرآیند مارک داون و تقسیم بخش ها در صفحه های وب و مارک داون آمده است.
فایل PDF¶
pip install "persian-rag[pdf]"
whole = load_pdf("book.pdf")
pages = load_pdf("book.pdf", split_pages=True)
در حالت دوم هر صفحه یک سند جدا با شناسه ای مانند book.pdf#page=3 است.
متن استخراج شده از PDF فارسی معمولا سه مشکل دارد و این بارگذار هر سه را برطرف می کند:
- شکل های نمایشی حروف. بسیاری از PDF ها به جای حرف، شکل چسبیده آن را ذخیره می کنند. این شکل ها به حرف معمولی برگردانده می شوند.
- ترتیب دیداری. برخی نرم افزارها هر خط را همان طور که روی صفحه دیده می شود ذخیره می کنند، پس واژه ها وارونه بیرون می آیند، مثلا «باتک» به جای «کتاب». در حالت پیش فرض
rtl_fix="auto"هر صفحه با دو نشانه سنجیده می شود: شکل حرف آغاز و پایان هر واژه، و اینکه واژه های پرکاربردی مانند «از» و «است» درست یا وارونه آمده اند. خط های وارونه برگردانده می شوند، پرانتزها قرینه می شوند و عددها و واژه های لاتین جهت چپ به راست خود را حفظ می کنند. - نویسه های نامرئی. نشانه های کنترل جهت، خط تیره نرم و نویسه های کنترلی حذف می شوند.
با rtl_fix="reverse" همه خط های فارسی برگردانده می شوند و با rtl_fix="none" ترتیب استخراج شده دست نمی خورد. برای فایل رمزدار password= را بدهید. برای استفاده از استخراج کننده دیگر، پارامتر reader_factory را بدهید.
همین پاک سازی به تنهایی هم در دسترس است:
from persian_rag import clean_extracted_text
clean_extracted_text(raw_text, rtl_fix="auto")
PDF اسکن شده به جای متن تصویر دارد. پیش از بارگذاری آن را با OCR به متن تبدیل کنید.
فایل Word¶
pip install "persian-rag[docx]"
load_docx("report.docx")
بندها و جدول ها به همان ترتیب سند خوانده می شوند. هر سطر جدول به یک خط با قالب cell | cell تبدیل می شود. Word متن را به ترتیب منطقی ذخیره می کند، پس به طور پیش فرض اصلاح جهت انجام نمی شود.
خطاها¶
اگر افزونه لازم نصب نباشد، خطای MissingDependencyError همراه با فرمان نصب رخ می دهد. فایل خراب خطای PersianRagError می دهد.