یک ابزار ساده و قدرتمند برای تبدیل فایلهای PDF فارسی به متن قابل ویرایش
سه ماه پیش، وقتی روی پایاننامهام کار میکردم، مشکل بزرگی داشتم. صدها صفحه کتاب و مقاله اسکن شده که باید محتوای فارسیشان را استخراج میکردم. هر ابزاری که امتحان کردم، نصف کلمات را اشتباه میخواند.
بعد از هفتهها جستجو و آزمایش، تصمیم گرفتم خودم چیزی بسازم. نتیجه؟ Persian OCR - ابزاری که 95 درصد متن فارسی را درست تشخیص میدهد.
سادگی استفاده: فقط فایل PDF را آپلود کنید، یک دکمه بزنید، و نتیجه را دانلود کنید.
دقت بالا: برخلاف ابزارهای دیگر که با متن فارسی مشکل دارند، Persian OCR مخصوص زبان فارسی بهینهسازی شده.
پردازش هوشمند: کد به صورت خودکار تنظیمات را بر اساس سایز فایل تغییر میدهد. فایل کوچک؟ کیفیت بالا. فایل بزرگ؟ بهینهسازی سرعت.
کاملاً رایگان: نه ماهانه، نه سالانه، نه هیچ هزینهای.
مکانیزم کار Persian OCR ساده اما هوشمندانه است:
مرحله اول - آمادهسازی: PDF را به تصاویر با کیفیت بالا تبدیل میکند. هر صفحه یک عکس JPEG با DPI بهینه.
مرحله دوم - بهبود تصویر: قبل از OCR، کنتراست را دو برابر میکند، تصویر را تیز میکند، و به grayscale تبدیل میکند.
مرحله سوم - پردازش موازی: بجای پردازش تک به تک صفحات، چندین صفحه را همزمان پردازش میکند. روی فایل بزرگ کار میکنید؟ سه worker همزمان کار میکنند.
مرحله چهارم - تولید نتیجه: همه متنهای استخراج شده را در یک فایل واحد جمع میکند، همراه با آمار کامل.
گام اول: روی لینک Google Colab کلیک کنید گام دوم: از منوی Runtime گزینه "Run all" را انتخاب کنید گام سوم: صبر کنید تا تمام کتابخانهها نصب شوند
این کار یکبار انجام میشود. بعدش فقط فایل آپلود کنید.
تست اول: کتاب "مددکاری اجتماعی" - 148 صفحه
- زمان پردازش: 4 دقیقه و 18 ثانیه
- کاراکتر استخراج شده: 125,847
- دقت: 98.6 درصد
تست دوم: مجموعه مقالات فارسی - 67 صفحه
- زمان پردازش: 2 دقیقه و 12 ثانیه
- کاراکتر استخراج شده: 89,234
- دقت: 96.3 درصد
تست سوم: پایاننامه اسکن شده - 203 صفحه
- زمان پردازش: 6 دقیقه و 55 ثانیه
- کاراکتر استخراج شده: 187,923
- دقت: 94.8 درصد
کیفیت PDF مهم است: فایلهایی با وضوح 300 DPI یا بیشتر بهترین نتیجه را میدهند. اگر خودتان هم متن را به سختی میخوانید، OCR هم مشکل خواهد داشت.
سایز فایل: Persian OCR میتواند فایلهای بزرگ تا 500 صفحه را پردازش کند، اما فایلهای کمتر از 50 صفحه سریعتر پردازش میشوند.
نوع فونت: فونتهای استاندارد مثل B Nazanin یا Tahoma بهتر از فونتهای تزیینی تشخیص داده میشوند.
تصاویر دستنویس: متون دستنویس دقت کمتری دارند. برای بهترین نتیجه از متون تایپ شده استفاده کنید.
خطای نصب: اگر در مرحله نصب با خطا مواجه شدید، از منوی Runtime گزینه "Restart and run all" را انتخاب کنید.
نتیجه خالی: احتمالاً کیفیت PDF پایین است. فایل با وضوح بهتر امتحان کنید یا تنظیمات DPI را افزایش دهید.
پردازش کند: برای فایلهای بزرگتر از 100 صفحه، کد به صورت خودکار DPI را کاهش میدهد. همچنین میتوانید فایل را به بخشهای کوچکتر تقسیم کنید.
قطع شدن فرآیند: این مشکل معمولاً در فایلهای خیلی بزرگ رخ میدهد. تعداد worker ها را از 3 به 2 کاهش دهید.
Tesseract OCR: قلب Persian OCR بر پایه Tesseract نسخه 4.1 با پشتیبانی کامل فارسی کار میکند.
پیشپردازش هوشمند: تصاویر قبل از OCR بهبود مییابند - افزایش کنتراست، تیز کردن، و بهینهسازی.
پردازش موازی: تا سه thread همزمان روی صفحات مختلف کار میکنند.
مدیریت حافظه: بعد از پردازش هر صفحه، فایلهای موقت پاک میشوند تا حافظه تمام نشود.
تطبیق خودکار: کد به صورت هوشمند تنظیمات را بر اساس سایز فایل تغییر میدهد.
دانشجویان: دیجیتالی کردن کتابهای کهنه، تبدیل پایاننامههای اسکن شده، استخراج قسمتهایی از مقالات
محققان: تبدیل اسناد تاریخی، آرشیو مطالب، جستجوی سریع در متون
کسب و کارها: دیجیتالی کردن اسناد اداری، تبدیل قراردادهای قدیمی، آرشیو الکترونیکی
استفاده شخصی: تبدیل نامهها و مدارک مهم، دیجیتالی کردن کتابهای شخصی
وقتی Persian OCR کارش را تمام میکند، فایل متنی شامل این اطلاعات تولید میکند:
هدر فایل با مشخصات کامل - نام فایل اصلی، تاریخ پردازش، تعداد صفحات موفق، و تعداد کل کاراکترها.
محتوای هر صفحه به صورت جداگانه - شماره صفحه، تعداد کاراکتر، و متن کامل.
آمار نهایی - درصد موفقیت، سرعت پردازش، و ارزیابی کیفیت.
Persian OCR با ساختار ماژولار نوشته شده:
تابع do_ocr_on_one_page - پردازش تک صفحه
تابع convert_pdf_to_image_files - تبدیل PDF به تصاویر
تابع main_ocr_processing_function - مدیریت کل فرآیند
همه کد با کامنتهای فارسی نوشته شده تا برای توسعهدهندگان ایرانی قابل فهم باشد.
Persian OCR نتیجه ماهها کار و آزمایش است. هدفش حل یک مشکل واقعی بود که خودم با آن دست و پنجه نرم کرده بودم. امیدوارم برای شما هم مفید باشد.
- GitHub: @MohammadHNdev
این پروژه تحت مجوز MIT منتشر شده است.
اگر مفید بود، فراموش نکنید ستاره بدهید!