"OCR faqat birini biriktirsam, tugaydi" deb o'ylagan paytimdan haqiqiy muammoni hal qilish boshlanadi.
Noto'g'ri shakldagi hujjatlarni tuzilgan pipeline'ni oldindan tasdiqlash uchun test holati sifatida matematik masalalar PDF'sini tanladim. Masala hududi va raqamlari aniq ajratilgan bo'lib, birinchi va ikkinchi bosqich maketlari aralashgan struktura mavjudligi sababli, maket tahlili va ma'noli xaritalashni bir vaqtda tekshirish uchun mos ma'lumot edi.
ammo haydovchi ma'lumotlar kutilganidan ancha murakkab edi. Savol raqami va matn piksel darajasida yaqin edi va har bir sahifada joylashuv tuzilishi turlicha edi. Natijada, oddiy OCR bilan savol tuzilishini barqaror tiklash mumkin emasligini tezda aniqladim.
Ushbu maqolada bunday muammolarni hal qilish uchun Vision aniqlash → koordinata tartibga solish → xarita → OCR ga olib boradigan 4 bosqichli quvur trubasini loyihalashtirdim va muvaffaqiyatsizliklarni takrorlay turib yaxshilanish jarayonini yig'dim.
1. Texnikani tanlash sababi — Nima uchun Vision aniqlash birinchi bo'lishi kerak edi
Matematika masalalari PDF'ni tuzish jarayonida dastlab OCR'ni birinchi bo'lib qo'llash usulini tanladik. O'sha paytda, OCR'ning tanish darajasi yetarlicha yuqori bo'lsa, savol tuzilishi tabiiy ravishda tiklanadi deb o'yladik.
Lekin haqiqiy testda kutilmagan va butunlay boshqacha muammolar yuzaga keldi. Ayniqsa, 2-chi daraja dizayni aralashgan hujjatlarda OCR hujjatni inson o'qishi tartibida tanimadi. Chap ustun va o'ng ustundagi savollar tartibi aralashdi va savol raqamlari matnning bir qismi bilan birlashib noto'g'ri tanib olinishi holatlari takroran yuz berdi.
Masalan, OCR natijasida 12-savoldan keyin 3-savol paydo bo'lishi yoki savol raqami formulalarning bir qismi sifatida noto'g'ri talqin qilinishi holatlarini ko'rish mumkin edi.
Nihoyatida his etganim shuki, OCR "harflarni o'qish texnologiyasi", "hujjat tuzilishini tushunish texnologiyasi" emas. Ya'ni, hujjat tuzilishini avval ishonchli ravishda tartibga solmasangiz, OCR tanish darajasi qanchalik yuqori bo'sa ham haqiqiy natijalarni to'g'ridan-to'g'ri ishlatib bo'lmaydi.
Keyin yondashuv yo'nalishini butunlay o'zgartirdim. Avval hujjat tuzilishini aniqlab olish va OCR har bir hudud ichidagi matnni o'qishni amalga oshirish uchun truboprovodni qayta loyihalashga o'tdim.
Xususan quyidagi mezonlarni birinchi o'rinda hisobga oldik.
-
Loyihalanish 1 qatorli yoki 2 qatorli bo'lishidan qat'i nazar, savol tartibini barqaror tiklash
-
Ba'zi OCR xatolari yuzaga kelgan taqdirda ham, umumiy partiya oqimi to'xtamaydi
-
Kelajakda veb UI maketini tahlil qilish kabi boshqa sohalarga kengaytirilishi mumkin bo'lgan tuzilma
Natijada, OCRga asoslangan yondashuvdan Visionga asoslangan tuzilma tahliliga o'tishga qaror qildik.
2. Qo'llaniladigan arxitektura va amalga oshirish jarayoni
Butun quvur liniyasi asosiy ravishda 4 bosqichga bo'lingan holda ishlab chiqilgan. Eng muhim jihati har bir bosqich orasidagi birikma darajasini kamaytirishga qaratilgan edi. Maxsus modulni almashtirish yoki o'zgartirish holatida, umuman oqimga ta'sirini minimal darajada saqlash maqsadi bilan mustaqil tuzilmani saqlab qolishga intildik.
Bundan tashqari, har bir bosqichda test o'tkazish imkoniyatini ta'minlab, muammo yuzaga kelganda qaysi bosqichda xato ro'y berganligini tezda aniqlash uchun rejalashtirilgan.
2.1 Ma'lumotlarni yaratish va YOLOv8 o'qitish
Ob'ektni aniqlash modeli sifatida Ultralyticsning YOLOv8-ni tanladik. U real vaqtli taxminlarda yetarlicha mAP'ni ta'minlay oladigan strukturaga ega bo'lib, Ultralytics ekotizimini to'liq saqlab qolish imkoniyati bizga modelni o'qitish, taxmin qilish va tekshirish jarayonlarini nisbatan tezroq yaratish imkonini berdi.
Sinflar problem qutisi (savol maydoni) va number qutisi (raqam maydoni) deb ikki turga aniqlangan. Ikkala maydonning ma'noli birligi aniq farq qiladi va keyinchalik bog'lash bosqichida 1:1 bog'lash uchun ajratilgan o'rganish majburiy edi. Keyin har bir maydonni problem qutisi va number qutisi deb belgilaymiz.
Lekin haqiqiy loyiha davomida eng ko'p vaqt sarflagan qism modelning o'zidan ko'ra belgilash qoidalari tartibini tuzish bo'lgan. Problem maydoni va number maydonini aniq ajratish kerak edi, va chegaralari chovuvchi hollarda har doim bir xil asosda belgilash kerak edi.
Amaliy oʻqitish jarayonida belgilash mezonlari biroz oʻzgarganida model maqsadga muvofiq ravishda o‘qitilmadi. Masalan, ba'zi ma'lumotlarda savol raqamini kiritib, kengroq quti yaratish, boshqalarda esa raqamni torroq ajratish modelning sifatli xususiyatlarni o‘rganishiga imkon bermadi.
Nihoyat, model samaradorligidan ko'ra muhimroq narsa "birlashgan ma'lumot aniqligi" ekanligini yana bir bor tasdiqlay olishim mumkin edi.
2.2 OCR oldini olish — 2 barobar kattalashtirish va ikki rangga o'tkazish
Vision aniqlanishi tugagandan so'ng, raqam qutisini kesib olgandan keyin OCR barqaror ravishda raqamlarni o'qishi uchun oldini olish jarayonidan o'tkazildi. Dastlab asl rezolyutsiyadagi tasvirni Tesseractga uzatdik, ammo kichik savol raqamlarining tanish darajasi kutganimizdan past bo'ldi.
Yaxshilash uchun kesilgan sohani butun sonlarga yaqin qo'shish usuli bilan o'girishdan keyin, kulranglarga o’girish va binarizatsiya (Otsu) qo'llash usulini sinab ko'rdik. Ko’paytmani 2/3 kaskad qilib o'zgartirganimizda, ushbu domen ma'lumotlarida 2 martalik eng barqaror edi.
Ko'paytmani oshirgimizda, aksincha, tanishish notinch bo'lib qoldi. Interpolatsiya algoritmini yaqin deb belgilaganimizda ham, piksel darajasidagi shovqin kengaygan va Tesseractning ichki normalashtirish farazlari bilan to'g'ri kelmasligi sababli, kichik raqamlarning silueti yanada xiralashdi deb hisobladik.
Shuningdek, PSM (Sahifa Segmentatsiya Rejimi) ni bitta qiymat bilan cheklanmasdan, bir blok (PSM 6) ustunligi → muvaffaqiyatsizlikka uchraganda bitta chiziq (PSM 7) bilan qayta sinash usulida tuzildi. number qutisi belgi soni 1-3 ta bilan qisqa bo'lgani uchun, PSM ga qarab natija farqlari katta edi.
Ushbu jarayonda olingan eng muhim saboq "kirish ma'lumotlarining xususiyatlari va model · dvigatel sozlamalari bir-biri bilan muvofiq bo'lishi kerak, shunda haqiqiy samaradorlikni oshirish natijalariga erishish mumkin" degan fikr edi. Faqatgina yechimni oshirish yoki rejimini o'zgartirish bilan tan olish darajasi oshmadi.
2.3 Koordinatalar asosidagi joylashuvni tiklash va moslashtirish ballari dizayni
Aniqlangan qutilar asosida amaldagi hujjatni o'qish tartibini tiklash uchun koordinatalar tartiblash mantiqini amalga oshirdik. Avval sahifa kengligining x o'qi o'rtacha qiymatini (image_width × 0.5) asos qilib problem qutilarini chap va o'ng ustunga ajratdik. Keyin har bir ustun ichida y o'qi → x o'qi bo'yicha tartiblab, haqiqiy inson o'qish oqimiga o'xshash tartibni tashkil etdik.
Ushbu jarayon orqali 1-dan 2-gacha bo'lgan tartibotlar aralashgan hujjatlarda nisbatan barqaror tarzda savollar tartibini tiklash imkonini berdi.
Keyinchalik problem qutisi va number qutisi o'rtasidagi bog'lanish oddiy evklid masofasi o'rniga, domen xususiyatlarini aks ettiruvchi normalizatsiya qilingan og'irlik ballaridan foydalandik. Matematik muammo tartibida savol raqamlari matnning chap yuqori burchagida deyarli bir xil masofada joylashganligi xarakteri mavjud bo'lib, chap-o'ng (x) tartiblash vertikal (y) tartiblashdan ko'ra ishonchli signal bo'lgani uchun.
score = 0.55 × (|nx − px| / p_width) + 0.35 × (|ny − py| / p_height) + 0.10 × (1 − y_overlap_ratio)
+ size_penalty # size_penalty = max(0, (n_area / p_area) − 0.08) × 3.0
Formulaga kiritilgan har bir o'zgaruvchi quyidagilardir.
-
px, py : muammo qutisining chap yuqori koordinatalari (asosiy nuqta)
-
nx, ny : moshlash nomzod raqamlar qutichasining chap yuqori koordinatalari
-
p_width, p_height : muammo qutichasining kengligi va balandligi. Masofa qiymatlarini muammo qutichasi o'lchamlari bilan normallashtirish uchun ishlatiladi
-
y_overlap_ratio : problem qutisi va number qutisi y o'qi bo'yicha to'g'ri keladigan foiz (0 ~ 1)
-
p_area, n_area : problem · number qutisi maydoni. size_penalty hisoblash uchun
Ballar past bo'lsa, yaxshi moslashuvchilar va har bir problem qutisida eng past ballga ega bo'lgan number qutisini 1:1 tarzda uladik. Asosiy dizayn maqsadi quyidagilardir.
-
dx va dy ni problem qutisining kengligi va balandligi bo'yicha har xil nom taklif qilingan, quti o'lchami farqli bo'lsa ham taqqoslash imkoniyatini yaratdi.
-
Savol raqami matnning chap yuqorisida joylashish tendentsiyasiga ega bo'lganligi sababli, x o'qi farqiga yuqori vazn (0.55) berib, chap va o'ngda joylashishni afzal ko'ydim.
-
y_overlap_ratio ni birga hisobga olib, yaqin masofada bo'lsa ham, vertikal ravishda umuman to'qnashmagan qutilar moslashuvchilar orasidan tabiiy ravishda uzoqlashishini ta'minladim.
-
number qutisi noxush katta bo'lsa (problem qutisi maydoni 8% dan ortiq bo'lsa) size_penalty berilib, katta qutining noto'g'ri mos kelishi holatlari oldini oldik.
Natijada oddiy Evklid masofasini ishlatgandek, ikki qatorda joylashgan savollar yoki qo'shni boshqa savollarning raqamlari yaxshiroq o'lchanadi.
Shuningdek, OCR muvaffaqiyatsizligi holatlari uchun Fallback mantiqi juda muhim edi. Dastlabki versiyada OCR muvaffaqiyatsiz bo'lsa, butun partiyani to'xtatish uchun amalga oshirilgan edi, ammo haqiqiy ish muhitida ba'zi OCR muvaffaqiyatsizligi butun jarayonni to'xtatishga olib keladigan muammolar yuzaga keldi.
Buni hal qilish maqsadida, OCR ma'noli raqamni chiqarib ololmagan taqdirda, sahifa raqami va tartib raqamini birlashtirgan muntazam identifikatorni avtomatik ravishda taqdim etishga o'zgartirdik.
if not real_number: real_number = f"{page_num}-{i + 1}" # 예: "3-7"
Ushbu usul tufayli ba'zi OCR muvaffaqiyatsizliklari sodir bo'lganda ham umumiy joylashtirish to'xtatilmadi va keyingi nazorat bosqichiga ma'lumotlarni davom ettirish mumkin edi. Natijada, tizimning tiklanish qobiliyati jihatidan juda katta yaxshilanishga erishildi.
Quyidagi jadval yuqorida tushuntirilgan to'rt bosqichli quvur tizimini bir qarashda tartibga soladi.
|
qarash |
modul |
Qayta ishlash jarayoni |
Izoh |
|---|---|---|---|
|
① |
Aniqlash |
YOLOv8(Ultralytics) — muammo · raqam quti aniqlash, ishonch chegarasi filtri |
Mustaqil almashtirish mumkin |
|
② |
Geo. Sort |
x o'qi o'rtacha qiymati bilan chap · o'ng ustunlarni ajratish → ustunlar bo'yicha y o'qini tartiblash → chap → o'ngni birlashtirish |
mustaqil almashtiriladigan |
|
③ |
Moshlash |
muammo ↔ raqam vaznli ballar asosida minimal moslashtirish → savol ob'ektini tuzish |
mustaqil almashtirish mumkin |
|
④ |
OCR |
number quti hosil → oldirish (2 marotaba kengaytirish · kulrangga o'tkazish · ikkita holatga o'tkazish) → Tesseract / muvaffaqiyatsizlikda zaxira identifikatori berish |
mustaqil almashtirish imkoniyati |
3. Amal natijasi
Haliqacha rasmiy benchmark ma'lumotlar to'plamini yaratmagan bosqichda bo'lganimiz sababli, natijalar amaliy muhit asosidagi kuzatish ma'lumotlari markazida to'plangan.
Eng yaxshi yaxshilanish ta'siri savollarning tartibini tiklash aniqligida edi. Avvalgi OCR markazli tuzilmasida savollar tartibi xatolik darajasi juda yuqori edi, ayniqsa, 2-qavatli joylashuvida tartibning aralashuvi bilan bog'liq muammolar tez-tez yuz berardi. Biroq, Vision asosidagi joylashuv tahlilini birinchi qilib o'tkazgandan so'ng, bunday xatoliklar ancha kamaydi.
Shuningdek, OCR muvaffaqiyatsiz bo'lganda butun joylashuvni to'xtatmasdan, Fallback tuzilmasi orqali jarayonni davom ettirish imkoniyati operatsion barqarorlikni ham sezilarli darajada oshirdi. Ayniqsa, qo'l bilan qayta ishlash foizining kamayishi aslida operatsion samaradorlik nuqtai nazaridan juda katta ahamiyatga ega edi. Avvalgi holatlarda joylashuv aralashgan sahifalar bo'yicha odamlar ko'pincha to'g'rilanishni o'zgartirishlari kerak edi, ammo qo'llanilishidan so'ng, aksariyat hollarda avtomatik ravishda hal etish mumkin edi.
|
Baholash elementi |
Qo'llashdan oldin |
Qo'llanilgandan keyin |
Izoh |
|---|---|---|---|
|
Savollar tartibi xatolik darajasi |
~23% |
~4% |
Boshqaruv kuzatuv mezonlari |
|
Jo'natish to'xtatilishi chastotasi |
Vaqti-vaqti bilan to'xtash |
deyarli 0 ta |
boshqaruv kuzatuv mezoni |
|
Layoutni aralashtirishni amalga oshirish |
Qo'lda qayta ishlash talab etiladi |
Avtomatik tasniflash |
Ishlatish kuzatish mezonlari |
|
Truboprovodning tiklanishi |
Yagona muvaffaqiyatsizlik → butun tizimni to'xtatish |
Fallback sifatida izolyatsiya |
Ishlash kuzatuv me'yorlari |
4. Chegar va kelajak rejalari
Ushbu PoC orqali asosiy Vision asosidagi hujjat strukturasini tashkil etish dasturini yetarlicha sinovdan o'tkazish mumkin edi. Ammo hali ham yaxshilanishi kerak bo'lgan joylar aniq mavjud.
Umuman olguda 3-qavatli yoki undan yuqori murakkab reja hujjatlari yoki formulasiyalangan quti ishlov berish ishlari hali barqaror emas. Ayniqsa, faqat formulasiyalangan hududlar oddiy matn hududlaridan farq qiladigan xususiyatlarga ega, shuning uchun alohida model yoki qo'shimcha qayta ishlash strategiyasi zarur bo'lishi mumkin deb hisoblamoqdamiz.
Shuningdek, moslashtirish bosqichining vazni (0.55 / 0.35 / 0.10) va size_penalty chegara qiymati (0.08) hozirgi operatsion ma'lumotlarda heuristik tarzda sozlangan. Kelajakda ma'lumotlar to'plami yetarlicha to'plangan taqdirda, bu qiymatlarni tekshirish to'plami asosida avtomatik qidiruv yoki o'qitishga asoslangan moslik modeliga o'tkazish imkoniyatlarini ko'rib chiqmoqda.
Va OCR natijalari va Vision aniqlash natijalari o'rtasidagi semantik bog'lanishni yanada nozikroq tashkil etish ishlari kelgusi muhim vazifa bo'lishi ko'rinmoqda.
Kelajakda hozirgi tasdiqlangan tuzilma asosida veb UI joylashuvi tahlili va ekran funksiyasi qo'llanmasini avtomatik yaratish sohalariga kengaytirish rejalashtirilmoqda. Ayniqsa ekran suratlariga asoslangan komponentlarni aniqlash va UI tuzilishini tahlil qilish sohalarida hozirgi tuzilmani katta darajada qayta ishlatish mumkin bo'lishini kutyapmiz.
Ushbu tajriba orqali oddiy OCR yordamida hal qilib bo'lmaydigan muammolar haqiqiy ish muhiti uchun juda ko'p ekanligini bevosita his qildim. Oxir-oqibat, muhim narsa "matnni o'qish" emas, balki "tuzilmani tushunish" ekanligini yana bir bor tasdiqlaganim tajribasi bo'ldi.
-
Ultralytics, "YOLOv8 Documentation", https://docs.ultralytics.com
-
Smith, R., "Tesseract OCR dvigateli haqida umumiy ma'lumot", ICDAR, 2007.
-
Otsu, N., "Kulrang histogramslardan chegara tanlash usuli", IEEE Trans. on Systems, Man, and Cybernetics, 1979.
Iqtiboslar
Junny