بالا بردن دقت OCR

پروژهٔ OCR راه افتاده و دقتش «خوب» است. سؤال بعدی همیشه این است: چطور بهترش کنیم؟
و اولین مشکل این است که کسی نمیداند دقت فعلی دقیقاً چقدر است — چون اندازهگیریاش را اشتباه انجام میدهند.
اول: دقت را درست بسنجید
سه سطح اندازهگیری که اعداد کاملاً متفاوتی میدهند:
دقت کاراکتر. چند درصد حروف درست خوانده شدهاند. عدد بزرگ و گمراهکننده — ۹۸٪ در یک سند ۵۰۰ کلمهای یعنی حدود ده کلمهٔ غلط.
دقت کلمه. سختگیرانهتر و واقعیتر.
دقت فیلد. آیا «مبلغ کل» درست استخراج شد یا نه. تنها عددی که به کسبوکار معنا میدهد.
سامانهای که فقط باید مبلغ و تاریخ و شمارهٔ فاکتور را دربیاورد، اهمیتی ندارد که در متن توضیحات چند حرف اشتباه خوانده. دقت را روی همان فیلدهایی بسنجید که استفاده میکنید.
و یک تفکیک مهمتر:
خطای قابل تشخیص — مقداری که با قاعده معلوم میشود غلط است: کد ملی که رقم کنترلیاش نمیخواند، تاریخی که وجود ندارد، جمعی که با اقلام نمیخواند.
خطای خاموش — عددی که معتبر به نظر میرسد و غلط است. «۱۲۵۰۰۰» که «۱۲۶۰۰۰» بوده.
دستهٔ دوم خطرناک است. اولی را سامانه میگیرد؛ دومی وارد حسابداری میشود. هدف بهبود باید کاهش دستهٔ دوم باشد، نه بالا بردن عدد کلی.
مجموعهٔ ارزیابی، که باید بسازید
بدون این، هر بهبودی حدس است.
صد تا دویست سند واقعی از همان جنسی که در تولید میآید — نه نمونههای تمیز. با اسکن بد، عکس کج، مهرخورده.
خروجی درست را دستی وارد کنید، برای همان فیلدهایی که اهمیت دارند.
پس از هر تغییر، همین مجموعه را اجرا کنید.
و مجموعه را بهروز نگه دارید: هر سند مشکلدار تولیدی به آن اضافه شود. این همان الگویی است که در استراتژی تست برای باگها گفتیم.
ترتیب اقدامات، به ترتیب بازده
۱. کیفیت ورودی — بیشترین اثر
هیچ بهبود مدلی به گرد این نمیرسد.
اگر ورودی از کاربر میآید، در همان لحظهٔ عکسگرفتن کنترل کنید: کادر راهنما، تشخیص تاری، هشدار نور کم، اجبار به عکس مجدد. پنج ثانیه اصطکاک برای کاربر، از ساعتها بازبینی بعدی ارزانتر است.
اگر ورودی اسکن است، تنظیمات اسکنر را استاندارد کنید: تفکیکپذیری کافی، سیاهوسفید یا خاکستری، بدون فشردهسازی زیاد.
۲. پیشپردازش
صاف کردن کجی، تصحیح چشمانداز، یکنواختسازی نور، حذف نویز. مسیر کاملش در پیشپردازش تصویر.
اما زیادهروی نکنید: آستانهگذاری تهاجمی، نقطههای حروف فارسی را حذف میکند — و همانطور که در OCR فارسی گفتیم، رفتن نقطه یعنی عوض شدن کلمه.
۳. محدود کردن دامنه
اگر میدانید فیلد فقط عدد است، به مدل بگویید فقط عدد. اگر میدانید تاریخ است، الگویش را بدهید.
این ارزانترین بهبود در کل فهرست است و اغلب فراموش میشود.
۴. تشخیص ناحیه بهجای کل صفحه
بهجای خواندن کل سند و بعد گشتن دنبال مبلغ، اول ناحیهٔ مبلغ را پیدا کنید و فقط آن را بخوانید.
دقت بالاتر میرود چون دامنه محدودتر است، و سرعت هم بیشتر میشود.
برای فرمهای ثابت، این کار ساده است. برای فاکتورهای متنوع، به تشخیص چیدمان نیاز دارد.
۵. اعتبارسنجی پس از تشخیص
هر قاعدهای که دارید، اعمال کنید:
- کد ملی و شبا: رقم کنترلی.
- تاریخ: معتبر بودن و بازهٔ منطقی.
- مبلغ: جمع اقلام باید با جمع کل بخواند. این یک قاعده، بخش بزرگی از خطاهای عددی فاکتور را میگیرد.
- کد کالا: وجود در فهرست شما.
و از تطبیق با دادههای موجود استفاده کنید: اگر نام تأمینکننده خوانده شد، با فهرست تأمینکنندگانتان تطبیق دهید. نزدیکترین تطابق، از خروجی خام دقیقتر است.
۶. لایهٔ زبانی
اصلاح خروجی با دانش زبانی. در فارسی ارزش بالایی دارد چون خطاهای نقطهای معمولاً کلمهٔ بیمعنی میسازند.
۷. تنظیم مدل روی دادههای خودتان
آخرین اقدام، نه اولین. پرهزینهترین — به دادهٔ برچسبخورده نیاز دارد.
ارزشش را وقتی دارد که همیشه یک نوع سند را پردازش میکنید و شش مورد بالا را انجام دادهاید.
چرا ۹۵ به ۹۹ گرانتر از ۷۰ به ۹۵ است
الگویی که در هر پروژهٔ OCR تکرار میشود:
بهبودهای اول ارزاناند — کیفیت ورودی، پیشپردازش، اعتبارسنجی. جهش بزرگی میدهند.
بعد به دیواری میرسید. پنج درصد باقیمانده، اسناد واقعاً بدند: تاشده، کمرنگ، مهرخورده، دستنویس روی چاپ.
و هزینهٔ هر درصد بعدی چند برابر میشود.
تصمیم درست معمولاً این نیست که آن پنج درصد را حل کنید. این است که تشخیصشان بدهید و به آدم بفرستید. سامانهای که ۹۵ درصد را خودکار انجام میدهد و پنج درصد را با اطمینان پایین علامت میزند، از سامانهای که ۹۸ درصد دقت دارد و نمیداند کدام دو درصد است، بهمراتب بهتر است.
درجهٔ اطمینان، ابزار اصلی
اگر یک چیز از این مقاله بماند:
خروجی OCR بدون درجهٔ اطمینان، نصفه است.
با آن میتوانید: آستانه بگذارید، بازبینی را فقط روی موارد مشکوک متمرکز کنید، و بهازای هر فیلد آستانهٔ متفاوتی داشته باشید — مبلغ سختگیرانه، توضیحات آسان.
و آستانه را با داده تنظیم کنید، نه با حدس: ببینید در چه آستانهای چند درصد خطا رد میشود و چند درصد بازبینی لازم میشود. آن نمودار، تصمیم را میگیرد.
سنجهٔ نهایی
نه دقت. این:
چند درصد اسناد بدون دخالت انسان و بدون خطا پردازش میشوند؟
و هزینهٔ هر سند — شامل پردازش و بازبینی.
اگر بهبودی این دو عدد را بهتر نکرد، مهم نیست دقت مدل چقدر بالا رفته.