مقایسه دقت Tesseract با مدلهای Deep Learning در خواندن فارسی
راهنمای جامع تبدیل عکس به متن فارسی: مقایسه هوشمندانه Tesseract و Deep Learning برای استخراج دقیق دادهها
جنگ اعداد و حروف: چرا خواندن فارسی برای ماشینها یک کابوس است؟
تا به حال به این فکر کردهاید که وقتی شما یک متن فارسی را میخوانید، در واقع چه اتفاقی در مغزتان میافتد؟ شما فقط به حروف نگاه نمیکنید؛ شما الگوها را میشناسید، فاصله بین کلمات را درک میکنید و حتی اگر یک حرف کمی بد نوشته شده باشد، از روی مفهوم جمله میفهمید که آن حرف چیست. اما برای یک کامپیوتر، یک تصویر از متن فارسی چیزی جز مجموعهای از پیکسلهای سیاه و سفید (یا رنگی) نیست. اینجاست که دنیای OCR یا همان «نویسهخوانهای نوری» وارد میدان میشود.
وقتی صحبت از تبدیل عکس به متن (OCR) در زبان فارسی میشود، ما با یکی از پیچیدهترین چالشهای دنیای تکنولوژی روبرو هستیم. چرا؟ چون فارسی برخلاف انگلیسی، حروفش به هم میچسبند، نقاط متعددی دارد که جابهجایی یک پیکسل در آنها معنای کلمه را عوض میکند و از همه مهمتر، فونتهای متنوعی دارد که از نستعلیق ظریف گرفته تا فونتهای خشک اداری میرسد.
طبق گزارشهای فنی در حوزه پردازش تصویر، نرخ خطای OCR در زبانهای راستبهچپ و متصل (Cursive)، به طور قابل توجهی بیشتر از زبانهای لاتین است؛ زیرا تفکیک حروف (Segmentation) در این زبانها یک چالش ریاضی پیچیده است.
در این میان، دو جریان اصلی برای حل این مشکل وجود دارد: روشهای سنتی و تکاملی مثل Tesseract و روشهای مدرن مبتنی بر Deep Learning (یادگیری عمیق). اگر بخواهیم خیلی ساده بگوییم، تسراکت مثل یک کتابخانهدار قدیمی است که لیستی از الگوها را حفظ کرده و سعی میکند هر حرف را با آن لیست تطبیق دهد. در مقابل، مدلهای یادگیری عمیق مثل یک کودک کنجکاو هستند که میلیونها صفحه متن را دیدهاند و حالا «درک» میکنند که یک حرف «س» در شرایط مختلف چه شکلی است.
اما سوال اصلی این است: آیا واقعاً به آن تکنولوژیهای پیچیده و گرانقیمت یادگیری عمیق نیاز داریم؟ یا هنوز هم تسراکت برای کارهای اداری و ساده ما کفایت میکند؟ بیایید روراست باشیم؛ پاسخ به این سوال بستگی به این دارد که شما چه چیزی را اسکن میکنید. اگر یک فایل PDF تایپ شده دارید، داستان یکی است و اگر میخواهید دستخط یک پزشک را بخوانید، داستان کاملاً تغییر میکند.
Tesseract چیست و چرا سالهاست که نامش را میشنویم؟
تسراکت (Tesseract) در واقع "پدربزرگ" دنیای OCR است. این موتور که ابتدا توسط HP توسعه یافت و بعدها گوگل آن را به صورت متنباز (Open Source) منتشر کرد، سالهاست که استاندارد طلایی برای برنامهنویسان بوده است. دلیل محبوبیتش هم ساده است: رایگان است، روی هر سیستمی نصب میشود و برای شروع نیازی به داشتن یک ابرکامپیوتر یا هزاران کارت گرافیک (GPU) ندارد.
اما بیایید کمی عمیقتر شویم. تسراکت در نسخههای قدیمی (قبل از ورژن ۴) بیشتر بر اساس تحلیل ویژگیها (Feature Extraction) کار میکرد. یعنی میگفت: «اگر در این قسمت از تصویر یک خط عمودی و در بالای آن یک دایره کوچک است، پس این احتمالاً حرف "پ" است». این روش برای متونی که با فونتهای استاندارد و بسیار تمیز چاپ شده بودند، عالی بود. اما تصور کنید یک کاغذ قدیمی را که کمی لک شده یا کج اسکن کردهاید؛ در اینجا تسراکت شروع به گیج شدن میکند.
تکامل تسراکت: وقتی یادگیری ماشین وارد شد
گوگل در نسخههای جدیدتر (Tesseract 4 و 5)، معماری این ابزار را تغییر داد و از شبکههای عصبی LSTM (Long Short-Term Memory) استفاده کرد. این یک جهش بزرگ بود. LSTM به تسراکت اجازه داد تا نه تنها به تکتک حروف، بلکه به ترتیب حروف هم توجه کند. یعنی حالا تسراکت میفهمد که بعد از حرف «ب» در زبان فارسی، احتمالاً چه حروفی میآیند و این موضوع باعث شد دقت آن در خواندن متون فارسی به طرز چشمگیری افزایش یابد.
با این حال، حتی با این آپدیتها، تسراکت همچنان با یک مشکل بنیادی دست و پنجه نرم میکند: وابستگی شدید به پیشپردازش. یعنی شما نمیتوانید یک عکس بیکیفیت را به تسراکت بدهید و انتظار نتیجه عالی داشته باشید. شما باید ابتدا عکس را سیاه و سفید کنید، نویزها را بگیرید، کج بودن متن را اصلاح کنید (Deskewing) و سپس آن را به تسراکت بدهید. در واقع، نیمی از دقت تسراکت به ابزاری که برای آمادهسازی عکس استفاده میکنید بستگی دارد، نه خودِ تسراکت!
برای اینکه بهتر متوجه شویم تسراکت در چه شرایطی شکست میخورد، بیایید یک مثال واقعی را بررسی کنیم. فرض کنید شما در حال دیجیتال کردن آرشیو یک روزنامه قدیمی هستید. کاغذ زرد شده، برخی حروف به دلیل کیفیت پایین چاپ، به هم چسبیدهاند و حاشیه کاغذها کمی سوخته است. در این سناریو، تسراکت احتمالاً در تشخیص فاصله بین کلمات دچار مشکل میشود و حروف را به صورت بههمپیوسته یا با غلطهای املایی زیاد تحویل میدهد. چرا؟ چون تسراکت هنوز هم تا حد زیادی به "مرزهای واضح" بین حروف وابسته است.
اگر در حال حاضر پروژهای دارید که نیاز به استخراج متن از اسناد رسمی و تمیز دارد، شاید استفاده از ابزارهای سادهتر یا حتی سرویسهای متصل به تسراکت کافی باشد. اما اگر به دنبال دقت ۹۹ درصد در شرایط سخت هستید، باید نگاهی به دنیای یادگیری عمیق بیندازیم. برای مشاوره در مورد اینکه کدام مدل برای بیزنس شما مناسبتر است، میتوانید از طریق بخش تماس ما راهنمایی بگیرید تا متوجه شوید آیا واقعاً به مدلهای سنگین نیاز دارید یا خیر.
پدیده Deep Learning: وقتی ماشینها شروع به "دیدن" کردند
حالا بیایید از دنیای الگوهای سختگیرانه فاصله بگیریم و وارد دنیای یادگیری عمیق (Deep Learning) شویم. اگر بخواهم یادگیری عمیق را به زبان ساده توضیح دهم، آن را به یک کودک تشبیه میکنم که میلیونها تصویر از حروف مختلف را دیده است. او دیگر به دنبال "خط عمودی" یا "دایره کوچک" نمیگردد؛ او مفهوم حرف را یاد گرفته است.
مدلهای یادگیری عمیق، بهویژه شبکههای عصبی کانولوشنال (CNN)، در تشخیص تصویر بیرقیب هستند. این مدلها تصویر را به لایههای مختلف تجزیه میکنند. لایه اول لبهها را میبیند، لایه دوم منحنیها را تشخیص میدهد و لایههای نهایی متوجه میشوند که این ترکیب از لبهها و منحنیها، در واقع یک حرف «ژ» است. این یعنی مدل دیگر به لرزش دست هنگام عکس گرفتن یاB کمی تاری تصویر حساس نیست، چون او "جوهر" حرف را میشناسد، نه فقط پیکسلهای آن را.
در مورد زبان فارسی، مدلهای Deep Learning انقلابی ایجاد کردند. یکی از بزرگترین دستاوردهای این حوزه، حذف نیاز به Segmentation (قطعهقطعه کردن کلمات) است. در روشهای قدیمی، ابتدا باید کلمه را به حروف تبدیل میکردیم و بعد هر حرف را میشناختیم. اما مدلهای مدرنی مثل CRNN (Convolutional Recurrent Neural Network) کل خط متن را به صورت یک رشته (Sequence) میبینند. آنها متن را میخوانند، درست همانطور که ما میخوانیم؛ از راست به چپ و به صورت یک جریان پیوسته.
اما یک نکته مهم وجود دارد: یادگیری عمیق جادو نمیکند؛ بلکه با دادهها تغذیه میشود. برای اینکه یک مدل Deep Learning بتواند فارسی را با دقت بالا بخواند، باید میلیونها نمونه از متون فارسی با فونتهای مختلف را "دیده" باشد. اینجاست که تفاوت بین یک مدل عمومی و یک مدل تخصصی مشخص میشود. برای مثال، مدلهایی که توسط شرکتهای بزرگی مثل گوگل (در Google Lens) یا مایکروسافت توسعه یافتهاند، به دلیل دسترسی به دیتاستهای عظیم، دقتی خیرهکننده دارند.
بیایید با یک مقایسه بصری ذهنی پیش برویم. تصور کنید متنی دارید که با قلم خطاطی نوشته شده است. در این متن، حرف «م» ممکن است در ابتدای کلمه کوچک باشد و در انتهای کلمه به صورت یک کشیدگی بلند ظاهر شود. تسراکت احتمالاً آن کشیدگی بلند را به عنوان یک خط یا یک کاراکتر ناشناخته تشخیص میدهد. اما یک مدل Deep Learning که با متون متنوع آموزش دیده، میفهمد که این کشیدگی بخشی از زیباییشناسی حرف «م» است و آن را به درستی شناسایی میکند.
این یعنی ما از دوران "تطبیق الگو" عبور کردهایم و وارد دوران "درک بصری" شدهایم. اما آیا این به معنای برتری مطلق است؟ قطعاً خیر. مدلهای یادگیری عمیق یک نقطه ضعف بزرگ دارند: سنگین بودن. برای اجرای این مدلها، شما به سختافزارهای قدرتمندی نیاز دارید. در حالی که تسراکت روی یک لپتاپ قدیمی هم اجرا میشود، مدلهای یادگیری عمیق برای پردازش سریع به GPUهای گرانقیمت نیاز دارند یا باید در محیطهای ابری (Cloud) اجرا شوند.
تقابل سر به سر: Tesseract در برابر Deep Learning در دنیای واقعی
تا اینجا فهمیدیم که تسراکت مثل یک ابزار دقیق اما سختگیر است و یادگیری عمیق شبیه به یک متخصص بصری با قدرت تحلیل بالا. اما وقتی این دو را در یک محیط واقعی، مثلاً برای استخراج دادهها از فاکتورهای خرید یا اسناد اداری شرکتها قرار دهیم، چه اتفاقی میافتد؟ بیایید بدون تعارف برویم سراغ اصل مطلب: در اکثر سناریوهای پیچیده، مدلهای Deep Learning با اختلاف زیاد پیروز میشوند، اما این پیروزی هزینههای خاص خود را دارد.
برای اینکه این مقایسه برای شما ملموستر شود، بیایید یک جدول مقایسهای را بررسی کنیم. این جدول دقیقاً همان چیزی است که یک مدیر پروژه یا یک صاحب کسبوکار برای تصمیمگیری به آن نیاز دارد:
| شاخص مقایسه | Tesseract (نسخههای جدید) | مدلهای Deep Learning (مثل CRNN) |
|---|---|---|
| دقت در متون تمیز (تایپی) | بسیار بالا (۸۰٪ تا ۹۵٪) | عالی (۹۵٪ تا ۹۹٪) |
| دقت در متون نویزی/قدیمی | پایین تا متوسط | بالا (با شرط آموزش مناسب) |
| سرعت اجرا (بدون GPU) | بسیار سریع | کند و سنگین |
| نیاز به سختافزار | بسیار کم (حتی روی Raspberry Pi) | زیاد (نیازمند کارت گرافیک NVIDIA) |
| پیادهسازی و استقرار | بسیار ساده و سریع | پیچیده (نیازمند متخصص AI) |
| توانایی خواندن دستخط | تقریباً صفر | متوسط تا بسیار بالا |
حالا بیایید کمی روی این اعداد مانور بدهیم. وقتی میگوییم دقت تسراکت در متون تمیز بالاست، یعنی اگر شما یک فایل PDF که مستقیماً از ورد به PDF تبدیل شده را داشته باشید، تسراکت تقریباً بینقص عمل میکند. اما به محض اینکه این متن را چاپ کنید، اسکن کنید و دوباره به صورت عکس برگردانید، دقت شروع به ریزش میکند. چرا؟ چون در این فرآیند، "نویزهای بصری" وارد میشوند. لرزش دست، سایههای ریز روی کاغذ، یا حتی غبار روی شیشه اسکنر، برای تسراکت مثل موانعی هستند که مسیر تشخیص را میبندند.
در مقابل، مدلهای Deep Learning با این نویزها "دوست" هستند. در واقع، در هنگام آموزش این مدلها، برنامهنویسان عمداً به تصاویر نویز اضافه میکنند (به این کار Data Augmentation میگویند). آنها به مدل میگویند: «ببین، این حرف "الف" است، حتی اگر کمی تارش باشد، یا اگر لکه روی آن باشد، باز هم "الف" است». به همین دلیل است که وقتی یک عکس بیکیفیت از یک تابلو خیابانی در تهران میگیرید، Google Lens میتواند با دقت خیرهکنندهای آن را بخواند، در حالی که تسراکت احتمالاً مجموعهای از کاراکترهای نامفهوم تحویل شما میدهد.
چالش "اتصال حروف" در فارسی: نقطه ضعف مرگبار تسراکت
اگر بخواهیم روی یک نقطه ضعف خاص دست بگذاریم، باید به موضوع Segmentation یا همان "قطعهبندی" اشاره کنیم. در زبان انگلیسی، حروف تا حد زیادی از هم جدا هستند (مثلاً در کلمه "Apple"، حرف A از p جداست). اما در فارسی، ما با مفهومی به نام "اتصال" طرف هستیم. حرف "س" در ابتدای کلمه شکل متفاوتی دارد و در انتهای کلمه شکل دیگری.
تسراکت سعی میکند ابتدا کلمه را به تکههای کوچک تقسیم کند و بعد هر تکه را شناسایی کند. حالا تصور کنید در یک فونت خاص، حرف "ل" و "ا" به گونهای به هم چسبیدهاند که مرز بین آنها کاملاً محو شده است. تسراکت در اینجا دچار تردید میشود: «آیا این یک حرف جدید است یا ادامه حرف قبلی؟». این تردید منجر به ایجاد غلطهای املایی عجیب میشود که در فارسی بسیار رایج است.
اما مدلهای یادگیری عمیق، بهویژه آنهایی که از لایههای RNN یا Transformer استفاده میکنند، اصلاً به دنبال مرز نیستند. آنها کل کلمه را به عنوان یک "رشته بصری" میبینند. آنها یاد گرفتهاند که الگوی "ل+ا" در زبان فارسی یک ترکیب رایج است و حتی اگر به هم چسبیده باشند، کل آن بلوک را به عنوان "لا" شناسایی میکنند. این یعنی عبور از منطق "تکه تکه کردن" به منطق "درک کلی".
شاید بپرسید: «خب، پس چرا همه از Deep Learning استفاده نمیکنند؟». پاسخ ساده است: هزینه و پیچیدگی. پیادهسازی یک سیستم مبتنی بر Deep Learning برای زبان فارسی، نیاز به دیتاستهای عظیم (مثلاً هزاران هزار تصویر برچسبگذاری شده) دارد. همچنین، برای اجرای این مدلها در مقیاس صنعتی، شما باید هزینه سرورهای ابری یا خرید GPUهای گرانقیمت را بپذیرید. در حالی که تسراکت را میتوانید با یک دستور ساده در ترمینال نصب کنید و در عرض ۵ دقیقه شروع به کار کنید.
یک قانون کلی در دنیای نرمافزار وجود دارد: "همیشه سادهترین ابزاری را انتخاب کن که کار را انجام میدهد". اگر نیاز شما فقط خواندن متون تایپی ساده است، هزینه کردن برای یادگیری عمیق مثل این است که برای رفتن به بقالی محله، یک جت شخصی بخرید!
اما اگر در حال ساخت سیستمی هستید که قرار است هزاران سند دستنویس یا اسکنهای قدیمی را پردازش کند و هر درصد خطا در آن به معنای ضرر مالی یا اشتباه در پروندههای حساس است، در آن صورت یادگیری عمیق تنها راه نجات شماست. در چنین شرایطی، تکیه بر ابزارهای رایگان و ساده، در نهایت منجر به هدر رفتن زمان برای تصحیح دستی خطاها میشود. برای اینکه بفهمید پروژه شما در کدام دسته قرار میگیرد و آیا نیاز به معماریهای پیچیده AI دارید یا خیر، پیشنهاد میکنم با متخصصان ما در صفحه تماس зиroxai گپی بزنید تا بر اساس حجم دادههایتان، بهینهترین مسیر را به شما معرفی کنیم.
تصور کنید یک سیستم بانکی را مدیریت میکنید که باید چکهای دستنویس مشتریان را بخواند. در اینجا، تشخیص اشتباه یک عدد یا یک حرف در نام صاحب حساب، میتواند منجر به فاجعهای شود. در این سناریو، تسراکت حتی در بهترین حالت خود هم قابل اعتماد نیست. اما یک مدل Deep Learning که روی هزاران نمونه چک فارسی آموزش دیده باشد، میتواند با احتمال ۹۸٪ مبلغ و نام را استخراج کند و فقط موارد مشکوک را برای بررسی انسانی بفرستد. این یعنی تبدیل یک فرآیند دستی و خستهکننده به یک جریان خودکار و سریع.
انتخاب نهایی: کدام مسیر برای شما سودآورتر است؟
رسیدیم به جایی که باید تمام این مباحث فنی را به یک تصمیم عملی تبدیل کنیم. احتمالاً تا اینجا متوجه شدهاید که هیچ برنده مطلقی در این جنگ وجود ندارد؛ بلکه ما با دو ابزار متفاوت برای دو هدف متفاوت روبرو هستیم. انتخاب بین Tesseract و Deep Learning، دقیقاً مثل انتخاب بین یک پیچگوشتی دستی و یک دریل برقی صنعتی است. هر دو پیچ میبندند، اما یکی برای تعمیرات ساده منزل است و دیگری برای ساخت یک آسمانخراش.
بیایید برای سادهتر شدن تصمیمگیری، سناریوهای مختلف را بررسی کنیم. اگر شما یک برنامهنویس مستقل هستید که میخواهد یک ابزار کوچک برای تبدیل عکسهای تمیزِ اسناد اداری به متن بسازد، یا اگر بودجه شما محدود است و حجم دادههایتان کم است، Tesseract بهترین دوست شماست. این ابزار سریع است، رایگان است و اگر کمی روی پیشپردازش تصاویر (مثل حذف نویز و تبدیل به سیاه و سفید) وقت بگذارید، نتایج رضایتبخش و قابل قبولی تحویل شما میدهد.
اما اگر در جایگاه یک مدیر کسبوکار یا استارتاپ هستید و میخواهید سیستمی بسازید که:
- به طور خودکار هزاران فاکتور، رسید یا فرم دستنویس را تحلیل کند.
- در محیطهای صنعتی با کیفیت تصاویر متغیر (نور کم، لرزش دوربین، زاویه بد) کار کند.
- نرخ خطای بسیار پایینی داشته باشد تا نیاز به بازبینی انسانی به حداقل برسد.
- سرمایهگذاری روی زیرساختهای سختافزاری (GPU) یا سرویسهای ابری را میپذیرد.
در این صورت، هرگونه تکیه بر روشهای سنتی مثل تسراکت، در واقع اتلاف زمان و هزینه است. مدلهای Deep Learning در این سطح، نه یک انتخاب، بلکه یک ضرورت هستند. آنها اجازه میدهند تا دادههای غیرساختاریافته (Unstructured Data) را به داراییهای دیجیتال ارزشمند تبدیل کنید.
آینده OCR در زبان فارسی به کدام سو میرود؟
اگر به ترندهای فعلی شرکتهای بزرگی مثل OpenAI یا گوگل نگاه کنیم، متوجه میشویم که مرز بین OCR و درک متن (Text Understanding) در حال از بین رفتن است. ما دیگر فقط به دنبال این نیستیم که ماشین حرف "ب" را تشخیص دهد؛ ما میخواهیم ماشین بفهمد که این "ب" بخشی از کلمه "بیمه" است و این کلمه در یک فاکتور، به معنای "نوع خدمات ارائه شده" است. این یعنی ورود به عصر Intelligent Document Processing (IDP).
در این عصر جدید، مدلهای یادگیری عمیق با مدلهای زبانی بزرگ (LLM) ترکیب میشوند. تصور کنید سیستمی دارید که ابتدا با یک مدل Deep Learning متن فارسی را از عکس استخراج میکند و سپس با استفاده از یک مدل زبانی، غلطهای املایی ناشی از OCR را اصلاح کرده و محتوای سند را تحلیل میکند. این همان جادویی است که دقت را از ۹۰٪ به بالای ۹۹٪ میرساند.
تکنولوژی هرگز متوقف نمیشود. امروز تسراکت برای شما کافی است، اما فردا رقبای شما با استفاده از یادگیری عمیق، سرعت پردازش اسنادشان را ۱۰ برابر میکنند و خطاهایشان را به صفر میرسانند. سوال این نیست که آیا باید تغییر کنید، سوال این است که چه زمانی این تغییر را آغاز میکنید؟
در نهایت، باید به یاد داشته باشید که پیادهسازی این سیستمها، بهویژه در زبان فارسی، یک مسیر پر از چالش است. از جمعآوری دیتاستهای استاندارد گرفته تا بهینهسازی مدلها برای اجرا روی سرور، همه نیاز به تخصص و تجربه عملی دارد. بسیاری از شرکتها در ابتدای راه با مدلهای آماده شروع میکنند، اما خیلی زود متوجه میشوند که هر کسبوکار، "لهجه بصری" خاص خود را دارد و نیاز به یک مدل شخصیسازی شده (Fine-tuned) است.
اگر احساس میکنید حجم اسناد شما در حال افزایش است و دیگر نمیتوانید به روشهای دستی یا ابزارهای ساده تکیه کنید، یا شاید میخواهید بدانید که دقیقاً کدام معماری یادگیری عمیق برای نوع دادههای شما (مثلاً اسناد اداری، نسخههای پزشکی یا چکهای بانکی) مناسبتر است، ما اینجا هستیم تا این مسیر پیچیده را برایتان هموار کنیم. شما میتوانید برای دریافت مشاوره تخصصی و بررسی رایگان نیازهای پروژهتان، از طریق بخش تماس زیراکس ایآی با ما در ارتباط باشید تا با هم بهترین استراتژی استخراج داده را برای بیزنس شما طراحی کنیم.
دنیای دادهها منتظر شماست؛ چه با ابزارهای ساده شروع کنید و چه با پیشرفتهترین مدلهای هوش مصنوعی، مهم این است که همین امروز اولین قدم را برای دیجیتالی کردن آرشیوهایتان بردارید و قدرت تحلیل دادهها را به سازمان خود هدیه دهید.