در مورد کپچا (Captcah) در همین چند ماه اخیر چندین مطلب دیدم که شما هم احتمالاً دیدهاید و باز هم احتمالاً دیگر میدانید کپچا چیست و به چه درد میخورد!... اما اگر نمیدانید که این موجود خرچنگمانند(اسمش را عرض میکنم!) چیست و یا اسمش را برای اولین بار است که میشنوید، مشکلی نیست، مختصر و مفیدی در موردش خواهید خواند.
اما آنچه که باعث شد در مورد کپچا بنویسم، سایتی بود که تا امروز آنقدر به آن توجه نکرده بودم و مطالبی هم که مینویسم از همین سایت است: reCAPTCHA
کپچا چیست؟
کپچا چیست؟
کپچا در حقیقت برنامهای است کوچک که هدف آن پاسخ به این سوال است که شما یک انسان هستید یا یک ربات!... خوب! شاید موقع ساختن ایمیل در سرویسهای مختلف مانند یاهو و جیمیل و ... یا در سیستمهای نظردهی و کامنتگذاری و یا در بسیاری از سایتهای مختلف دیگر، درخواستی را دیدهاید که میگوید حروف داخل عکس کوچک را وارد کنید؛ یک عکس کوچک که حروفی در هم و برهم با خطوط رنگی مختلف که گاهی تشخیصش بسیار دشوار است را نشان میدهد. کپچا، برنامه تولیدکننده این حروف است که اغلب به صورت تصادفی تصویری (پازلی!) را میسازد تا شما به آن پاسخ دهید. از آنجا که تشخیص این حروف برای رباتها و یا برنامههای هوشمند OCR اغلب غیرممکن است، پاسخ صحیح شما نشاندهنده این است که شما یک انسان هستید نه ربات!
اولین باری که کپچا را دیدم (و احتمالاً برای شما هم همین طور است) سالها پیش و موقع ساختن ایمیل در یاهو بود. هنوز آن زمان نمیدانستم کپچا چیست و این کلمات کج و معوج برای چیست تا همین اواخر که در برنامهنویسی به آن برخوردم.
تا اینجای کار به هدف اولیهای که برای کپچا مشخص شده است، رسیدهایم. این کار برای برنامهای که با آن کار میکنیم مفید است، اما حدس میزنم برای ایجادکنندگان سایت reCAPTCHA دو سوال مطرح شد:
1. آیا این کار بازدیدکنندگان و کاربران، غیر از هدف اولیه، سود دیگری هم دارد؟
... خوب! جواب این سوال، ساده است: خیر!
2. و حالا که جواب سوال اول خیر بود، آیا میتوان از این کار نسبتاً بیهوده، بهرهای برد که هم خدا را خوش بیاید و هم خلق خدا سودی ببرند و خدمتی هم به جامعه بشری محسوب شود؟
...
پاسخ به سوال دوم، ایدهی جالبی بود که اکنون کپچاهای سایت reCAPTCHA بر اساس آن عمل میکنند...
reCAPTCHA یک سرویس رایگان تولید کپچاست که بدون کدنویسی اضافی، برای سایتها و وبلاگها و سرویسهای مختلف تحت وب، کپچا تولید میکند. اما کپچاهای تولیدشده توسط ویجتهای (برنامههای کوچک) این سایت حروف تصادفی نیستند بلکه از اسکنهایی از کتابها، روزنامهها و اجراهای رادیویی قدیمی گرفته شدهاند و واقعی هستند. بنابراین با هر بار پرشدن این کپچاها شما قسمتی از متون قدیمی غیرقابل خواندن توسط نرمافزارهای OCR را بازخوانی میکنید.
طبق مطالبی که در این سایت آمده است، روزانه در حدود 200 میلیون کپچا توسط انسان در سراسر دنیا و در سرویسهای مختلف وب پر میشوند. پرکردن هر کپچا به طور متوسط 10 ثانیه زمان میبرد که مدت زمان نسبتاً کوتاهی است. اما اگر تمام این مدتزمانها و پازلها یا همان کپچاهای پرشده در کنار هم قرار بگیرند، روزانه در حدود 150 هزار ساعت کار انجام میشود.
در راستای بایگانی کردن و دیجیتالیزهکردن دانش بشر، پروژههای مختلفی تاکنون به وجود آمدهاند که هدف آنها بازنویسی دیجیتال متونی است که به پیش از ساختن و یا ترویج کامپیوتر باز میگردند. به طور معمول در این روش، صفحات کتابها و متون قدیمی به صورت عکس اسکن شده و با استفاده از OCR (مخفف Optical Character Recognition) به صورت متن در میآیند.
تبدیل این اسناد به صورت متن به این خاطر است که معمولاً عکسهای اسکنشده دارای حجم زیاد هستند و مهمتر از آن قابل جستجو نیستند. بنابراین تبدیل عکس به متن میتواند بسیار مفید باشد.
مشکل: در اینجا مشکلی وجود دارد؛ OCR ابزار مفیدی است اما دقت لازم را ندارد!
reCAPTCHA برای افزودن دقت فرآیند دیجیتالیزهکردن، کلماتی را که قابل خواندن برای OCR نیستند و OCR آنها را اطلاع میدهد، در کپچاهای خود جای میدهد تا انسان در خصوص آنها قضاوت کند!
اما اگر این کلمات برای کامپیوتر قابل خواندن نیستند پس چطور سیستم تشخیص دهد که آنچه انسان مینویسد قابل اعتماد است؟
جواب، اینجاست: هر کلمهی جدیدی که توسط OCR خوانده نمیشود به همراه یک کلمهی دیگر که صحت آن توسط OCR تأیید شده است در یک کپچا قرار میگیرد و برای کاربر نمایش داده میشود. حال اگر کاربر این کلمه را درست نوشته باشد، صحت کلمه دوم نیز تأیید میشود و سیستم شما را به عنوان یک کاربر میشناسد. اما در غیر این صورت سیستم، شما را ربات خواهد دانست!
کار همینجا تمام نمیشود! کپچایی که شما به آن پاسخ دادید، برای کاربران دیگری نیز نمایش داده خواهد شد تا نتیجهی دقیق حاصل شود.
آنطور که در سایت reCAPTCHA نوشته شده است کلماتی که هماکنون در حال نمایش هستند از نسخههای قدیمی روزنامه New York Times میباشد.
شما هم میخواهید کمک کنید؟!
به دو روش میتوانید این کار را انجام دهید:
1. قرار دادن کپچا در جایی که از فرمها در سایتتان استفاده میکنید (و یا فعال کردن آن در سیستم نظردهی وبلاگهای وردپرس و ...)؛
[+]
2. قراردادن ایمیلتان در سایت یا وبلاگ برای جلوگیری از مشاهده توسط رباتهای جستجوی ایمیل یا اسپمرها (کاربر برای مشاهده ایملتان به صورت کامل باید یک کپچا را پر کند) [+].
حاشیه 1: هنوز پرکردن این پازلها یا کپچاها، متداولترین راه برای جلوگیری از کار رباتهای هرزنامهنویس است اما تحقیقات دیگری نیز برای خلق روشهای دیگری که نیاز به دخالت انسان در تشخیص هویت انسانیاش نباشد، وجود دارد. یادم هست که ماهها قبل، مقاله جالبی در کلیک (ضمیمه یکشنبههای روزنامه جام جم) خوانده بودم که صحبت از تشخیص انسان از ربات از روی حرکات و واکنشهای ماوس در صفحه میکرد (همانطور که میدانید رباتها، ماوس ندارند!).
حاشیه 2: من نمیدانم در کشورمان آیا برای کسانی که در امور نگهداری و بازیابی اسناد و مدارک تاریخی و قدیمی هستند دیجیتالیزهکردن و نگهداری در بایگانیهای دیجیتال و همچنین امکان در دسترس قراردادن اینگونه اسناد برای همگان با قابلیتهای جستجو در متون قدیمی اهمیتی دارد یا نه (شاید خندهدار به نظر برسد که حتی کسی از آنها به این موضوع فکر کند!) اما تا آنجایی که من میدانم الگوریتمهایی برای بازیابی متون فارسی در برنامهها وجود دارد و بر روی OCR فارسی هم کارهایی انجام شده است، به نظرم انجام کار مشابه برای متون فارسی، میتواند پروژهی جالب و بسیار مفیدی برای دانشجویان IT و کامپیوتر در سطوح بالا باشد.