OCR چیست؟
فرض کنید که ما متنی را روی کاغذ داریم و میخواهیم آن را وارد رایانه کنیم. اولین روشی که به ذهن میرسد این است که متن را به تایپیست بدهیم تا با کامپیوتر تایپ کند. اما آیا میشود عین همان متن را وارد رایانه بکنیم تا نیازی به تایپ نباشد؟
البته دستگاه «اسکنر» میتواند تصویری از آن متن را وارد رایانه کند، تا اینجا بخشی از مشکل ما حل شده است. اما رایانه که نه عقلی دارد و نه «زبان» میفهمد، نمیتواند حروف و کلمات را از هم تشخیص دهد.
مثلاً اگر از کامپیوتر بخواهیم به ما بگوید که در متن اسکنشده کلمة «علی» چند بار آمده است، بیآنکه شرمنده شود، میگوید نمیتوانم تشخیص بدهم! در واقع این «تصویر دیجیتالشده» باید به «تصویر قابل پردازش» تبدیل شود. موضوع اصلی OCR همین است.
OCR سرنام اصطلاحی است که صورت کامل آن در واژهنامههای انگلیسی به دو صورت آمده است:
1. Optical Character Recognition
2. Optical Character Reader
انواع OCR
در زبانهای دیگر، به ویژه زبانهایی که با حروف لاتینی نوشته میشوند، سالهاست که از OCR استفاده میشود. اما در ایران تازه دو سه سالی است که به فکر استفاده از OCR در زبان فارسی افتادهایم.
و اما OCR چند نوع است: یا تایپی است یا دستنویس. یعنی یا باید یک متن قبلاً تایپ شده را (مثل کتابها و روزنامههای چندین سال قبل، یا حتی متنی را که فایل تایپی آن موجود نیست و فقط پرینت آن را داریم) وارد رایانه کنیم، یا متن دستنویس را.
متنهای دستنویس هم به دو صورت «گسسته» و «پیوسته» وجود دارند: متن «دستنویس پیوسته» مثل همان چیزهایی است که ما هرازگاهی که دلمان تنگ میشود روی کاغذ مینویسیم، یا یک نامه، یا یک قطعه شعر و ... اما متن «دستنویس گسسته» همان نوشتههایی است که حروف آن جدا از هم و به صورت گسسته نوشته شدهاند، مثل نام و نامخانوادگی که در فرمهای آزمون ثبتنام، به صورت هر حرف داخل یک کادر، نوشته میشوند.
طراحی OCR گسستة فارسی تقریباً در مراحل پایانی کار قرار دارد ولی، OCR پیوسته ظاهراً سالهای زیادی کار میبرد.
فارسی ما و مشکلات آن
قبل از اینکه به مراحل دیگر OCR بپردازیم، لازم است اندکی هم به مشکلات خط فارسی ــ یا در واقع ویژگیهای این خط ــ بپردازیم. اول اینکه ما در فارسی حروف را به صورت چسبیده و پیوسته مینویسیم و این کار برای تشخیص حرف به حرف نوشته از سوی رایانه (که قرار است در مراحل بعدی آن را تایپ کند) بسیار مشکل است. تصور کنید که همین کلمه ساده «است» را به حالتهای مختلف میشود نوشت: یکی برای «س» دندانه میگذارد، یکی نمیگذارد، یکی آن را میکشد و یکی نمیکشد و... حالا اگر همین صورتهای مختلف «س» به «ت» هم بچسبند، تشخیص حروف برای ما انسانها هم سخت میشود، چه رسد به رایانه.
شباهت حروف
مشکل دیگر خط ما این است که حرفهای فارسی بسیار به هم شبیهاند. مثلاً در نظر بگیرید که تفاوت «ر» با «ز» با «ذ» یا «ب» با «ت» تنها در یک نقطه است، و چون نقطه جزء بسیار کوچکی است، اگر یک خط یا حتی یک لک کوچک روی کاغذ بیفتد، تشخیص حروف از هم بسیار دشوار میشود و دردسر جدی برای بازشناسی حروف توسط رایانه ایجاد میکند. اینها تازه مشکلات خط فارسی است. دربارة اعداد فارسی هم این مشکل وجود دارد: صفر ما یک نقطه کوچک است که میتواند رایانه را به اشتباه بیندازد؛ اعداد 4، 3، 2، 1 هم بسیار به هم شبیه هستند و تنها تفاوتشان یک دندانه کوچک است.
به دلایل گفته شده OCR درمرحلة کنونی در کشور ما مربوط به «دستنویسهای گسسته» یا متنهای تایپی پیوسته است، و تا بازشناسی متنهای دستنویس پیوسته توسط کامپیوتر راه زیادی در پیش است، چون در دستنویسهای گسسته، اگرچه حروف به هم شباهت دارند، حداقل جداجدا نوشته شدهاند. در متنهای پیوسته تایپی هم مشکل کشیده شدن یک حرف یا شکسته نوشته شدن حروف را نداریم.
البته به گفته مسئولان شرکت «پایا» در حال حاضر هم نرمافزارهایی وجود دارد که متن دستنویس پیوسته را تبدیل به حروف جدا ازهم و گسسته میکنند، ولی ضریب خطای این نرمافزارها زیاد است و به شکل صنعتی درنیامدهاند.
بازشناسی حروف و الگو
تا اینجا گفتیم تصویر صفحهای که در آن حروف به طور جداجدا (هر حرف داخل یک کادر) نوشته شده است، به وسیلة اسکن وارد رایانه میشود. مرحلة بعدی این است که حروف بازشناسی شوند، یعنی مکان آنها از دیگر خطوط (مثل خطوط کادری که داخل آن نوشته شده) بازشناسی شود، و اگر متن پیوسته تایپی است، حروف جدا شوند و زواید تصویر حذف شود. مثلاً اگر دانشآموزی «س» را به گونهای نوشت که بیرون از کادر بود، به رایانه بفهمانیم که بیدقتی شده است او باید همان حرف داخل کادر را بخواند.
در مرحلة بعدی که «بازشناسی الگو» نام دارد، با تعدادی شرط میشود فهمید که مثلاً حرفی «الف» است یا نه، و رایانه تشخیص میدهد که حرف «پ» است یا «ب». برای این تشخیص لازم است که تصویر حرف «الف» با الفهای نمونه ــ که قبلاً به رایانه داده شده است ــ منطبق شود. الفبای نمونه قبلاً از روی یک مجموعه بزرگ آموزشی تهیه شده و ویژگیهای مشترک از آن استخراج شده است. اما از آنجا که تنوع صورتها نوشتاری یک حرف به صورت دستنویس بسیار زیاد است، مدلی آماری استخراج میشود که در آن شباهت ویژگیهای استخراج شدة قبلی با نمونه ورودی به رایانه بررسی میشود. در اینجا «بازشناسی الگو» با روشهای آماری انجام میشود که روش معمول در سیستمهای OCR است.
اگر فکر میکنید که کار تمام شده است در اشتباهید، چون تازه میرسیم به دنبالة حروف. مثلاً اگر کسی همان حرف «س» را با دنباله بنویسد، رایانه باید تشخیص دهد که این حرف فقط «س» است، یا مثلاً «ی» هم به آن چسبیده است.
مدلسازی یا پردازش زبانی
مرحله بعدی «مدلسازی زبانی» یا «پردازش زبانی» نام دارد. حروف به هم چسبیده، که کلمه را درست میکنند، باید معنیدار یا شناختهشده باشند. در این مرحله بررسی میشود که چه کلماتی در زبان وجود دارد؟ چه ترکیبهایی از کلمات مجاز است؟ و... البته در مراحل پیشرفتهتر، مدلسازی گرامری (دستور زبان) و مدلسازی معنایی هم وجود دارد که تشخیص میدهد جمله از لحاظ دستوری و معنایی درست است یا بیمفهوم است. اما در OCR گسسته ــ که بیشتر برای ثبتنام استفاده شده ــ شباهت یک کلمه به نام، نام خانوادگی، شهر و ... کافی است.
برای تشخیص ترکیبهای مجاز یک کلمه یا معنیدار بودن یک کلمه نیز به تهیة بانکهای اطلاعاتی (Data base) نیاز داریم. در این بانکها مثلاً تمام نامهای کوچک و بزرگ ایرانیان قبلاً جمعآوری شده است و هنگام تطبیق یک کلمه با آن مشخص میشود که رایانه حروف آن را دست تشخیص داده یا نه. بنابراین نقش این بانک اطلاعاتی بسیار مهم است، چون اگر نامی در آن ثبت نشده باشد، کلمهای که آن نام را شامل شود، به طور خودکار از برنامه OCR حذف میشود یا پیغام میآید که: «این کلمه اشتباه است» در صورتی که ممکن است مثلاً نام «هشام» در بین نامهای ایرانی وجود داشته باشد، ولی قبلاً در بانک اطلاعاتی ثبت نشده باشد.
بانکهای ما و دیگران
مهندس «رزازی» دربارة مشکل بانکهای اطلاعاتی در زبان فارسی میگوید: «در دنیا برای توسعة OCR و ارزیابی آن، بانکهای اطلاعاتی استاندارد ساخته شده است که در آنها همة کلمات وجود دارند، یعنی بانک هم مشکل دیجیتال کلمه را دارد، و هم تصویرش را. اما برای زبان فارسی، این بانکهای اطلاعاتی چه برای ارزیابی و چه برای توسعه، استاندارد شده نیست. در واقع هر کسی برای خودش یک بانک اطلاعاتی میسازد، و این نمونههای متفاوت مشکلاتی را ایجاد میکند. مثلاً برای ثبتنام دانشآموزانی که در آزمون مدارس تیزهوشان شرکت کرده بودند، یک بانک اطلاعاتی حاوی نامهای فارسی، از روی اطلاعات فرمهای سالهای قبل، تهیه شد که از روی آن کلماتی که خیلی شبیه به نامهای فارسی بودند تشخیص داده میشد. مثلاً اگر رایانه کلمهای را «مصیبت» تشخیص داد، براساس بانک اطلاعاتی معلوم میشود که «مصیب» بوده است که یک نام ایرانی است.
علی، ولی، قلی ... و سیب
نکتة دیگر این است که یک بانک اطلاعاتی باید شامل تعدادی کلمات خام باشد، بلکه «بسامد» آن واژگان، یعنی میزان استعمال و تکرار کلمات در زبان و مشخصات آماری آنها هم باید ثبت شده باشد، والا کارایی زیادی ندارد. مثلاً «علی» نامی است که شباهت زیادی به «ولی» و «قلی» دارد. کارهای آماری در بانک اطلاعاتی باید طوری انجام شده باشد که تعداد «علی» بیشتر باشد، تا و بعد نوبت «ولی» و «قلی» برسد، چون درصد بسامدی «علی» به لحاظ آماری و کاربرد در میان نامهای بیشتر است.
در OCR فارسی گسسته، اگر فقط مربوط به نامها و نامخانوادگی باشد، کار سادهتر است از حالتی که در OCR پیوسته وجود دارد. چون در OCR پیوسته هر کلمهای ممکن است وجود داشته باشد مثل «سیب»، اما در بانک اطلاعاتی نامها همه میدانیم که سیب نام یک شخص نیست بلکه نام یک میوه است! بنابراین در OCR همواره سعی میشود که درصد خطا کاهش یابد، تا کلمات در حد ممکن درست تشخیص داده شوند. اگرچه طراحان هنوز به صددرصد صحت نرسیدهاند، ولی نگران نتایج آزمون خود نباشید، چون تمامی اطلاعات مربوط به شما چندین بار کنترل میشوند و از سازوکار reject (یا مردودی) در رایانه هم استفاده میشود. در این روش اگر رایانه نتوانست کلمهای را تشخیص دهد، میفهمد که نفهمیده است و در خروجیاش میآورد که: «من این کلمه را نفهمیدهام» و کار به سیستم دستی میرود و در آنجا تصحیح میشود. این فرایند در پست خیلی کارایی دارد. در هر جای دنیا که تفکیک نامهها و دیگر مرسولات پستی به وسیلة OCR انجام میشود، بعضی از نامهها در سیستم کامپیوتری وارد سازوکار «مردودی» میشوند و به طور دستی مورد بررسی مجدد قرار میگیرند. هماکنون در سطح محدودی از OCR در پست کشور ما نیز استفاده میشود، چون در پست هم کد پستی چندرقمی و دیگر اطلاعات به صورت گسسته و داخل کادرهایی نوشته میشود، و کار آسانتر است.
در مورد خطای OCR در تشخیص کلمات، مسئولان شرکت «پایا» نظر جالبی دارند:
«حتی با تعبیة سیستم مردودی (reject) هم ممکن است خطایی در تشخیص کلمات وجود داشته باشد. باید در نظر داشته باشیم که هیچ سیستم پردازشگری (از جمله انسان) بدون خطا نیست. نکته مهم این است که یک سیستم ماشینی درصد خطای کمتری نسبت به انسان داشته باشد تا جایگزین خوبی برای انسان باشد. مسئله این نیست که خطا را به صفر برسانیم. هر قدر که فناوری جلوتر میرود، میزان خطا هم بیشتر کاهش مییابد.»
مدیر شرکت «دوران نوین» هم به گونهای دیگر به همین موضوع اشاره میکند: «انتظار ما از مسئولان طرح «تکفا» آن است که با موضوع OCR واقعبینانهتر برخورد شود، و در بحث مربوط به هزینههای پروژه و انتظاراتی که از OCR میرود، واقعیتها در نظر گرفته شود. دیدگاه کنونی مسئولان تکفا آن است که کل مشکل «خطا» تا 100درصد حل شود، در حالی که فکر میکنم حل مسائل مربوط به هوش مصنوعی نیاز به روش تدریجی دارد. مثلاً در زبان عربی هم، نرمافزار «صخر» در نسخة اول خود فقط تا حدود 40درصد دقت داشت، در حالی که اکنون پس از گذشت 13 سال از اولین نسخه آن دقت به مرز 98 درصد رسیده است.»
همانطور که اشاره شد از OCR در ثبتنام آزمون «سازمان ملی استعدادهای درخشان» در سالهای 81 و 82 استفاده شد که از طریق آن 000,440 نفر به طور ماشینی ثبتنام شدند. این روش باعث شد که در سال 81 (نمونه اول) 45 درصد در هزینهها و 25 درصد در زمان ثبتنام صرفهجویی شود. در سال بعد (82) این رقم به 50 درصد رسید. نرمافزاری که در این آزمونها مورد استفاده قرار گرفت برای هر کدام از موارد صحت بازشناسی متفاوتی داشت و در مجموع کار آن خوب بود (به جدول توجه کنید):
به نظر میآید که در چند سال آینده و با پیشرفت OCR فارسی و کاهش هر چه بیشتر خطای آن، در آزمونهای بزرگتری مانند آزمون سراسری دانشگاهها نیز بتوان از آن استفاده کرد.
سرنوشت OCR دستنویس
در مورد OCR پیوسته دستنویس نیز روند کار به همان صورتی است که شرح دادیم، اما آنچه کار را دشوارتر میکند، قطعهبندی و جداجدا کردن حروف به هم چسبیده و تشخیص آنهاست. اگر این روند طی شود، این امید وجود دارد که روزی از OCR پیوسته دستنویس فارسی هم در سطح گستردهای استفاده شود. البته OCR پیوسته دستنویس حتی در زبان انگلیسی هم هنوز به کاربرد وسیع و عملی نرسیده است. مهندس «رزازی» دراین مورد میگوید: « OCRانگلیسی در سیستم عامل windows وجود دارد که همراه با office فروخته میشود، ولی فکر نکنید که نامههای اداری انگلیسی که با دستنویس نوشته شدهاند همه با OCR تایپ میشوند. این کار برای به نتیجه رسیدن به حداقل یک روند 10 ساله را باید طی کند. OCR فارسی یک مرحله عقبتر است، پس زمان بیشتری میبرد.»
مهندس «صدیق»، مدیرعامل شرکت «پایا» هم میگوید: «همین OCR فارسی گسسته هم تا چند سال پیش یک رؤیا بود، ولی دیدیم که محقق شده است و به مرور پیشرفتهتر هم خواهد شد. بنابراین طراحی OCR پیوسته فارسی هم، اگرچه سالها طول میکشد، ولی مطمئناً به نتیجه خواهد رسید. این طرح یک طرح تحقیقاتی است که در دانشگاهها دنبال میشود و هنوز به یک محصول صنعتی قابل استفاده در سطح کلان و کاربردی برای عموم نرسیده است. ولی در حال حاضر نمونههای دانشگاهی و آزمایشگاهی آن در داخل کشور وجود دارد و موضوع رساله دکتری برخی از دانشجویان است.»
بنابراین بین 10 تا 20 سال آینده، آنگونه که مسئولان شرکت «پایا» میگویند، OCR پیوسته دستنویس فارسی هم وارد بازار خواهد شد.
دکتر فیلی هم در پاسخ به این سؤال که «آیا طراحی OCR پیوستة فارسی روزی تحقق خواهد یافت؟» پاسخ میدهد: «بله ولی به تدریج.»
به هر حال براساس قرارداد «تکفا» با شرکتهای ایرانی، تا کمتر از یک ماه دیگر، نسخهنهایی (البته نه صددرصد تکمیلشده) OCR فارسی دستنویس گسسته و تایپی پیوسته ارائه خواهد شد. مدیر شرکت «دوران نوین» در این مورد میگوید: «پروژة OCR گسسته در مراحل پایانی خود قرار دارد ولی دارای مشکلاتی در تشخیص انواع اسکنرها و انواع فونتهاست که در حال رفع آن هستیم. این نرمافزار در حال حاضر امکان تشخیص فونتهای تایپی فارسی با دقت زیاد را دارد، ولی مشکل جدی آن است که با اسکنرهای مختلف نتایج نامناسبی میدهد.» وی از اهمیت این طرح در بعد کلان ملی هم میگوید: «با توجه به این که مشکل OCR برای بسیاری از زبانهای دنیا مانند انگلیسی عملاً حل شده است، اگر در کشور ما هم به نتیجة نهایی برسد در افزایش سطح اطلاعات فارسی در دنیای دیجیتالی امروز (از جمله در اینترنت) بسیار اهمیت خواهد داشت.
منبع: