Parsel؛ پارس PDF و اسناد آفیس و تصویر در PHP
خلاصهٔ کاملتر
Parsel یه پکیج PHP (ساختهی Pushpak Chhajed) هست که PDF، اسناد ورد، صفحهگسترده، ارائه و تصویر رو از طریق یه API واحد و روان پارس میکنه. این پکیج ابزار خطفرمانِ lit از liteparse رو میپیچه و همهی کار رو محلی انجام میده، یعنی فایلها هیچوقت به یه سرویس بیرونی فرستاده نمیشن. به PHP 8.4 نیاز داره و خودش یه دستور برای نصب باینری lit هم داره.
همون API برای همهی فرمتها کار میکنه: text() برای متن ساده و parse() برای یه آبجکت ساختارمندِ Document:
use Shipfastlabs\Parsel;
$text = Parsel::file('contract.pdf')->text();
$document = Parsel::file('amendment.docx')->parse();خروجیِ Document متن کامل، متادیتای سند، pageCount() و یه مجموعهی pages رو نشون میده. هر صفحه شماره، عرض، ارتفاع، متن و یه فهرست از آیتمهای مختصاتدار داره؛ هر آیتم متنی موقعیت و اطلاعات فونتش رو هم همراه داره (x, y, width, height, fontName, fontSize و یه امتیاز confidence). همین برای خوندن جدولها، پیداکردن بلوک امضا یا نگاشت بندها به موقعیتشون روی صفحه خیلی به درد میخوره.
از نظر کنترل، میتونی کار رو به صفحههای خاصی محدود کنی با page()، pages()، pageRange() و maxPages()؛ این فراخوانیها افزایشیان و قبل از پارس قابلترکیب. برای فایلهای بزرگ هم lazyPages() هر بار یه صفحه رو پردازش میکنه تا مصرف حافظه ثابت بمونه. OCR بهصورت پیشفرض خاموشه و با withOcr() روشن میشه (با آرگومانهای نامدار برای زبان، مسیر tessdata، آدرس سرور OCR و تعداد worker). با screenshots() هم میشه صفحهها رو به فایل تصویری تبدیل کرد.
چند قابلیت دیگه: فایلهای رمزدار با withPassword() باز میشن، withDpi() رزولوشن رندر رو بالا میبره (برای تیزترشدن OCR و اسکرینشات)، preserveSmallText() نوشتههای ریز مثل پانویس رو حفظ میکنه و withTimeout() یه محدودیت زمانیِ هر فایل میذاره تا یه سند بزرگ یه درخواست رو گیر نندازه. برای تست هم Parsel یه runner جعلی داره تا لازم نباشه به باینری واقعیِ lit شل بزنی؛ خروجی آماده رو به قطعههای فرمان نگاشت میکنی و روی فرمانهای ضبطشده assert میزنی. نصبش هم با Composer (composer require shipfastlabs/parsel) و بعد نصب باینری lit انجام میشه.
نکات کلیدی:
- Parsel با یه API واحد PDF، اسناد آفیس و تصویر رو در PHP پارس میکنه
- همهی کار محلیه و فایلها به سرویس بیرونی فرستاده نمیشن؛ به PHP 8.4 نیاز داره
- خروجی Document متن، متادیتا و آیتمهای متنیِ مختصاتدار (با فونت و امتیاز اطمینان) میده
- قابلیت انتخاب صفحه، lazyPages برای حافظه، OCR، اسکرینشات، فایل رمزدار و runner جعلی برای تست داره




