استخراج جدول از سند اسکنشده

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