ডিপ লার্নিং ব্যবহার করে টেবিল সনাক্তকরণ এবং তথ্য নিষ্কাশন

উত্স নোড: 1325422

টেবিল নিষ্কাশন ভূমিকা

ক্রমবর্ধমান সংখ্যক অ্যাপ্লিকেশন, সফ্টওয়্যার এবং অনলাইন প্ল্যাটফর্মের সাথে সংগৃহীত ডেটার পরিমাণ দিন দিন ব্যাপকভাবে বৃদ্ধি পাচ্ছে।

এই বিপুল পরিমাণ ডেটা উত্পাদনশীলভাবে পরিচালনা/অ্যাক্সেস করতে, মূল্যবান তথ্য নিষ্কাশন সরঞ্জামগুলি বিকাশ করা প্রয়োজন।

তথ্য নিষ্কাশন ক্ষেত্রের একটি উপ-ক্ষেত্র যা মনোযোগের দাবি করে তা হল চিত্র থেকে টেবিলের নিষ্কাশন বা ফর্ম, পিডিএফ এবং নথি থেকে ট্যাবুলার ডেটা সনাক্ত করা।

টেবিল এক্সট্রাকশন একটি নথিতে টেবিলের তথ্য সনাক্ত এবং পচানোর কাজ।

টেবিল ওসিআর - ন্যানোনেটস একটি চিত্র থেকে টেবিল ডেটা বের করছে!
টেবিল ওসিআর - ন্যানোনেটস একটি চিত্র থেকে টেবিল ডেটা বের করছে!

কল্পনা করুন যে আপনার কাছে ট্যাবুলার ডেটা সহ প্রচুর নথি রয়েছে যা আপনাকে আরও প্রক্রিয়াকরণের জন্য বের করতে হবে। প্রচলিতভাবে, আপনি সেগুলি ম্যানুয়ালি কপি করতে পারেন (একটি কাগজে) বা এক্সেল শীটে লোড করতে পারেন৷

যাইহোক, টেবিল OCR সফ্টওয়্যার দিয়ে, আপনি স্বয়ংক্রিয়ভাবে টেবিল সনাক্ত করতে পারেন এবং নথি থেকে সমস্ত ট্যাবুলার ডেটা এক সাথে বের করতে পারেন। এটি অনেক সময় বাঁচায় এবং পুনরায় কাজ করে।

এই নিবন্ধে, আমরা প্রথমে দেখব কিভাবে Nanonets স্বয়ংক্রিয়ভাবে ছবি বা নথি থেকে টেবিল বের করতে পারে। আমরা তারপর নথিতে টেবিল সনাক্ত এবং নিষ্কাশন করার জন্য কিছু জনপ্রিয় DL কৌশল কভার করব।


চালান, রসিদ বা অন্য কোন ধরনের নথি থেকে ট্যাবুলার ডেটা বের করতে চান? Nanonets' দেখুন পিডিএফ টেবিল এক্সট্র্যাক্টর ট্যাবুলার ডেটা বের করতে। একটি ডেমো তফসিল স্বয়ংক্রিয় সম্পর্কে আরও জানতে টেবিল নিষ্কাশন.


সুচিপত্র

ন্যানোনেট টেবিল ওসিআর সহ চিত্র থেকে টেবিল বের করুন

  • নিবন্ধন করুন একটি বিনামূল্যে Nanonets অ্যাকাউন্টের জন্য

    • Nanonets টেবিল OCR মডেলে ছবি/ফাইল আপলোড করুন
    • Nanonets স্বয়ংক্রিয়ভাবে সনাক্ত করে এবং সমস্ত ট্যাবুলার ডেটা বের করে
    • ডেটা সম্পাদনা এবং পর্যালোচনা করুন (যদি প্রয়োজন হয়)
    • এক্সেল, csv বা JSON হিসাবে প্রক্রিয়াকৃত ডেটা রপ্তানি করুন

ন্যানোনেট সহ চিত্র থেকে টেবিল বের করুন

চাই পিডিএফ থেকে ডেটা স্ক্র্যাপ করুন নথি, পিডিএফ টেবিলকে এক্সেলে রূপান্তর করুন or স্বয়ংক্রিয় টেবিল নিষ্কাশন? খুঁজে বের কর কিভাবে Nanonets পিডিএফ স্ক্র্যাপ or পিডিএফ পার্সার আপনার ব্যবসা আরও উত্পাদনশীল হতে শক্তি দিতে পারে।


Nanonets টেবিল OCR API

Nanonets সহ টেবিল OCR
Nanonets সহ টেবিল OCR

সার্জারির Nanonets OCR এপিআই আপনাকে সহজে OCR মডেল তৈরি করতে দেয়। আপনার ছবিগুলিকে প্রি-প্রসেস করার বা আপনার ওসিআর মডেলের নির্ভুলতা বাড়ানোর জন্য টেমপ্লেট মেলানো বা নিয়ম ভিত্তিক ইঞ্জিন তৈরি করার বিষয়ে চিন্তা করতে হবে না।

আপনি আপনার ডেটা আপলোড করতে পারেন, এটি টীকা করতে পারেন, মডেলটিকে প্রশিক্ষণের জন্য সেট করতে পারেন এবং কোডের একক লাইন না লিখে, GPU গুলি নিয়ে চিন্তা না করে বা গভীর শিক্ষার মডেলগুলি ব্যবহার করে আপনার টেবিল সনাক্তকরণের জন্য সঠিক আর্কিটেকচারগুলি না লিখে একটি ব্রাউজার ভিত্তিক UI এর মাধ্যমে পূর্বাভাস পাওয়ার জন্য অপেক্ষা করতে পারেন৷

এছাড়াও আপনি প্রতিটি ভবিষ্যদ্বাণীর JSON প্রতিক্রিয়াগুলি আপনার নিজস্ব সিস্টেমের সাথে সংহত করতে এবং অত্যাধুনিক অ্যালগরিদম এবং একটি শক্তিশালী অবকাঠামোর উপর নির্মিত মেশিন লার্নিং চালিত অ্যাপ তৈরি করতে পারেন।

https://nanonets.com/documentation/


আপনার ব্যবসা কি ডিজিটাল নথি, পিডিএফ বা চিত্রগুলিতে ডেটা বা পাঠ্য স্বীকৃতির সাথে ডিল করে? আপনি কি ভাবছেন কিভাবে ট্যাবুলার ডেটা বের করতে হয়, ছবি থেকে পাঠ্য নিষ্কাশন , পিডিএফ থেকে ডেটা উত্তোলন or পিডিএফ থেকে টেক্সট নিষ্কাশন সঠিকভাবে এবং দক্ষতার সাথে?


যারা টেবিল নিষ্কাশন দরকারী খুঁজে পাবেন

পূর্ববর্তী বিভাগে আলোচনা করা হয়েছে, একটি পরিষ্কার বিন্যাসে ডেটা উপস্থাপন করতে টেবিলগুলি ঘন ঘন ব্যবহার করা হয়। বিভিন্ন ক্ষেত্র জুড়ে আমরা সেগুলি প্রায়শই দেখতে পাই, আমাদের কাজ সংগঠিত করা থেকে শুরু করে বিভিন্ন সারণী জুড়ে ডেটা স্ট্রাকচার করা থেকে শুরু করে কোম্পানির বিশাল সম্পদ সংরক্ষণ করা পর্যন্ত। এমন অনেক সংস্থা রয়েছে যা প্রতিদিন লক্ষ লক্ষ টেবিলের সাথে মোকাবিলা করতে হয়। ম্যানুয়ালি সবকিছু করার মতো শ্রমসাধ্য কাজগুলি সহজতর করার জন্য, আমাদের দ্রুত কৌশল অবলম্বন করতে হবে। চলুন কিছু ব্যবহার ক্ষেত্রে আলোচনা করা যাক যেখানে নিষ্কাশন টেবিল অপরিহার্য হতে পারে:

উত্স: প্যাট্রিক টমাসো, আনস্প্ল্যাশ

ব্যক্তিগত ব্যবহারের ক্ষেত্রে

সার্জারির টেবিল নিষ্কাশন প্রক্রিয়া ছোট ব্যক্তিগত ব্যবহারের ক্ষেত্রেও সহায়ক হতে পারে। কখনও কখনও আমরা মোবাইল ফোনে নথিগুলি ক্যাপচার করি এবং পরে সেগুলি আমাদের কম্পিউটারে অনুলিপি করি। এই প্রক্রিয়াটি ব্যবহার করার পরিবর্তে আমরা সরাসরি নথিগুলি ক্যাপচার করতে পারি এবং আমাদের কাস্টম টেমপ্লেটগুলিতে সম্পাদনাযোগ্য বিন্যাস হিসাবে সংরক্ষণ করতে পারি। আমরা কীভাবে আমাদের ব্যক্তিগত রুটিনে টেবিল নিষ্কাশনকে ফিট করতে পারি সে সম্পর্কে নীচে কয়েকটি ব্যবহারের কেস রয়েছে -

ফোনে নথি স্ক্যান করা হচ্ছে: আমরা প্রায়শই ফোনে গুরুত্বপূর্ণ টেবিলের ছবি ধারণ করি এবং সেগুলি সংরক্ষণ করি, কিন্তু টেবিল নিষ্কাশন কৌশলের সাহায্যে, আমরা টেবিলের ছবিগুলি ক্যাপচার করতে পারি এবং সেগুলিকে সরাসরি একটি ট্যাবুলার ফর্ম্যাটে, হয় এক্সেল বা গুগল শীটে সংরক্ষণ করতে পারি। এর সাহায্যে, আমাদের কোনো নতুন ফাইলে ছবি অনুসন্ধান বা টেবিলের বিষয়বস্তু অনুলিপি করার দরকার নেই, পরিবর্তে, আমরা সরাসরি আমদানি করা টেবিল ব্যবহার করতে পারি এবং নিষ্কাশন করা তথ্যের উপর কাজ শুরু করতে পারি।

HTML এর নথি: ওয়েব পৃষ্ঠাগুলিতে, আমরা টেবিল ব্যবহার করে উপস্থাপিত তথ্যের লোড খুঁজে পাই। তারা ডেটার সাথে তুলনা করতে আমাদের সাহায্য করে এবং একটি সংগঠিত উপায়ে নম্বরগুলির উপর একটি দ্রুত নোট দেয়। টেবিল নিষ্কাশন প্রক্রিয়া ব্যবহার করে, আমরা পিডিএফ ডকুমেন্ট বা JPG/PNG ছবি স্ক্যান করতে পারি এবং সরাসরি একটি কাস্টম স্ব-পরিকল্পিত টেবিল বিন্যাসে তথ্য লোড করতে পারি। আমরা বিদ্যমান টেবিলের উপর ভিত্তি করে অতিরিক্ত সারণী যোগ করতে স্ক্রিপ্ট লিখতে পারি এবং এর মাধ্যমে তথ্য ডিজিটাল করতে পারি। এটি আমাদের বিষয়বস্তু সম্পাদনা করতে সাহায্য করে এবং স্টোরেজ প্রক্রিয়া দ্রুত করে।


শিল্প ব্যবহারের ক্ষেত্রে

সারা বিশ্বে বেশ কিছু শিল্প রয়েছে যা কাগজপত্র এবং ডকুমেন্টেশনের উপর ব্যাপকভাবে চলে, বিশেষ করে ব্যাংকিং এবং বীমা খাতে। গ্রাহকদের বিশদ সংরক্ষণ করা থেকে শুরু করে গ্রাহকদের চাহিদা পূরণের জন্য, টেবিলগুলি ব্যাপকভাবে ব্যবহৃত হয়। এই তথ্যটি আবার একটি নথি (হার্ড কপি) হিসাবে অনুমোদনের জন্য বিভিন্ন শাখায় প্রেরণ করা হয়, যেখানে কখনও কখনও, ভুল যোগাযোগের ফলে টেবিল থেকে তথ্য নেওয়ার সময় ত্রুটি হতে পারে। পরিবর্তে, এখানে অটোমেশন ব্যবহার করে, আমাদের জীবন অনেক সহজ করে তোলে। একবার প্রাথমিক ডেটা ক্যাপচার এবং অনুমোদিত হলে, আমরা সরাসরি সেই নথিগুলিকে টেবিলে স্ক্যান করতে পারি এবং ডিজিটাইজড ডেটাতে আরও কাজ করতে পারি। সময় খরচ এবং ত্রুটি হ্রাস করা যাক, আমরা গ্রাহকদের সময় এবং অবস্থান সম্পর্কে অবহিত করতে পারি যেখানে তথ্য প্রক্রিয়া করা হয়। এটি, তাই, ডেটার নির্ভরযোগ্যতা নিশ্চিত করে এবং আমাদের ক্রিয়াকলাপ মোকাবেলা করার উপায়কে সহজ করে। আসুন এখন অন্যান্য সম্ভাব্য ব্যবহারের ক্ষেত্রে দেখি:

মান নিয়ন্ত্রণ: মান নিয়ন্ত্রণ হল প্রধান পরিষেবাগুলির মধ্যে একটি যা শীর্ষ শিল্পগুলি প্রদান করে। এটি সাধারণত অভ্যন্তরীণ এবং স্টেকহোল্ডারদের জন্য করা হয়। এর অংশ হিসাবে, প্রদত্ত পরিষেবা সম্পর্কে প্রতিক্রিয়া জানাতে গ্রাহকদের কাছ থেকে প্রচুর প্রতিক্রিয়া ফর্ম রয়েছে। শিল্প খাতে, তারা প্রতিদিনের চেকলিস্ট এবং নোটগুলি লেখার জন্য টেবিল ব্যবহার করে কীভাবে উত্পাদন লাইনগুলি কাজ করছে তা দেখতে। এই সমস্ত সহজে টেবিল নিষ্কাশন ব্যবহার করে একক জায়গায় নথিভুক্ত করা যেতে পারে.

সম্পদের ট্র্যাক: ম্যানুফ্যাকচারিং ইন্ডাস্ট্রিতে, লোকেরা ইস্পাত, লোহা, প্লাস্টিক ইত্যাদির মতো উত্পাদিত সত্তাগুলির ট্র্যাক রাখতে হার্ডকোডযুক্ত টেবিল ব্যবহার করে। প্রতিটি তৈরি করা আইটেমকে একটি অনন্য নম্বর দিয়ে লেবেল করা হয় যেখানে তারা প্রতিদিন তৈরি এবং সরবরাহ করা আইটেমগুলির ট্র্যাক রাখতে টেবিল ব্যবহার করে। অটোমেশন ভুল স্থান বা ডেটা অসামঞ্জস্যতার পরিপ্রেক্ষিতে অনেক সময় এবং সম্পদ বাঁচাতে সাহায্য করতে পারে।


ব্যবসায়িক ব্যবহারের ক্ষেত্রে

এক্সেল শীট এবং অফলাইন ফর্মগুলিতে চালিত বেশ কয়েকটি ব্যবসায়িক শিল্প রয়েছে। কিন্তু এক সময়ে, এই শীট এবং ফর্মগুলির মাধ্যমে অনুসন্ধান করা কঠিন। যদি আমরা ম্যানুয়ালি এই টেবিলগুলি প্রবেশ করি তবে এটি সময়সাপেক্ষ এবং ভুলভাবে ডেটা প্রবেশের সম্ভাবনা বেশি হবে৷ সুতরাং টেবিল নিষ্কাশন ব্যবসায়িক ব্যবহারের ক্ষেত্রে সমাধান করার জন্য একটি ভাল বিকল্প যেমন নীচে কয়েকটি রয়েছে।

চালান অটোমেশন: অনেক ক্ষুদ্র ও বৃহৎ শিল্প রয়েছে যাদের চালান এখনও ট্যাবুলার ফর্ম্যাটে তৈরি করা হয়। এগুলি সঠিকভাবে সুরক্ষিত ট্যাক্স বিবৃতি প্রদান করে না। এই ধরনের বাধা অতিক্রম করতে, আমরা সমস্ত রূপান্তর করতে টেবিল নিষ্কাশন ব্যবহার করতে পারি চালান একটি সম্পাদনাযোগ্য বিন্যাসে এবং এর মাধ্যমে, তাদের একটি নতুন সংস্করণে আপগ্রেড করুন৷

ফর্ম অটোমেশন: অনলাইন ফর্মগুলি ব্যবসায়িকদের তাদের প্রয়োজনীয় তথ্য সংগ্রহ করতে সাহায্য করে এবং একই সাথে তাদের কর্মপ্রবাহের মধ্যে নির্মিত অন্যান্য সফ্টওয়্যার প্ল্যাটফর্মের সাথে এটি সংযুক্ত করে এই চেষ্টা করা এবং সত্য পদ্ধতিটিকে ব্যাহত করছে। ম্যানুয়াল ডেটা এন্ট্রির প্রয়োজনীয়তা হ্রাস করার পাশাপাশি (সহ স্বয়ংক্রিয় ডেটা এন্ট্রি) এবং ফলো-আপ ইমেল, টেবিল নিষ্কাশন প্রথাগত কাগজ বিকল্পগুলি মুদ্রণ, মেইলিং, সঞ্চয়, সংগঠিত এবং ধ্বংস করার খরচ দূর করতে পারে।


মনে একটি OCR সমস্যা আছে? ডিজিটাইজ করতে চাই চালান, পিডিএফ নাকি নম্বর প্লেট? উপর মাথা ন্যানোনেটস এবং বিনামূল্যে ওসিআর মডেলগুলি তৈরি করুন!


ডিপ লার্নিং ইন অ্যাকশন

ডিপ লার্নিং হল কৃত্রিম নিউরাল নেটওয়ার্কের উপর ভিত্তি করে মেশিন লার্নিং পদ্ধতির বৃহত্তর পরিবারের একটি অংশ।

নিউরাল নেটওয়ার্ক হল একটি কাঠামো যা প্রদত্ত ডেটার অন্তর্নিহিত সম্পর্কগুলিকে এমন একটি প্রক্রিয়ার মাধ্যমে স্বীকৃতি দেয় যা মানব মস্তিষ্কের কাজ করার পদ্ধতিকে অনুকরণ করে। তাদের বিভিন্ন কৃত্রিম স্তর রয়েছে যার মাধ্যমে ডেটা পাস হয়, যেখানে তারা বৈশিষ্ট্য সম্পর্কে শিখে। বিভিন্ন ধরণের ডেটা প্রক্রিয়া করার জন্য কনভোলিউশন এনএন, রেকারেন্ট এনএন, অটোএনকোডার, জেনারেটিভ অ্যাডভারসারিয়াল এনএনের মতো বিভিন্ন আর্কিটেকচার রয়েছে। এগুলি জটিল তবুও রিয়েল-টাইমে সমস্যাগুলি মোকাবেলা করার জন্য উচ্চ কার্যকারিতা চিত্রিত করে। আসুন এখন নিউরাল নেটওয়ার্ক ব্যবহার করে টেবিল নিষ্কাশন ক্ষেত্রে যে গবেষণা করা হয়েছে তা দেখে নেওয়া যাক এবং সংক্ষেপে সেগুলো পর্যালোচনা করা যাক।


টেবিলনেট

কাগজ: টেবিলনেট: স্ক্যান করা ডকুমেন্ট ইমেজ থেকে এন্ড-টু-এন্ড টেবিল ডিটেকশন এবং ট্যাবুলার ডেটা এক্সট্রাকশনের জন্য ডিপ লার্নিং মডেল

ভূমিকা: TableNet হল একটি আধুনিক ডিপ লার্নিং আর্কিটেকচার যা টিসিএস রিসার্চ ইয়ারের 2019 সালের একটি দল দ্বারা প্রস্তাব করা হয়েছিল। মূল প্রেরণা ছিল মোবাইল ফোন বা ক্যামেরার মাধ্যমে স্ক্যান করা টেবিল থেকে তথ্য বের করা।

তারা একটি সমাধান প্রস্তাব করেছে যাতে একটি চিত্রের মধ্যে ট্যাবুলার অঞ্চলের সঠিক সনাক্তকরণ এবং পরবর্তীতে সনাক্ত করা টেবিলের সারি এবং কলামগুলি থেকে তথ্য সনাক্তকরণ এবং নিষ্কাশন অন্তর্ভুক্ত রয়েছে।

ডেটাসেট: ব্যবহৃত ডেটাসেটটি ছিল মারমট। এটির পিডিএফ ফরম্যাটে 2000 পৃষ্ঠা রয়েছে যা সংশ্লিষ্ট স্থল-সত্যের সাথে সংগ্রহ করা হয়েছিল। এর মধ্যে চাইনিজ পেজও রয়েছে। লিঙ্ক - http://www.icst.pku.edu.cn/cpdp/sjzy/index.htm

আর্কিটেকচার: স্থাপত্যটি লং এট আল। শব্দার্থিক বিভাজনের জন্য একটি এনকোডার-ডিকোডার মডেলের ভিত্তিতে তৈরি। টেবিল নিষ্কাশনের জন্য FCN আর্কিটেকচার হিসাবে একই এনকোডার/ডিকোডার নেটওয়ার্ক ব্যবহার করা হয়। ইমেজ preprocessed এবং ব্যবহার করে পরিবর্তন করা হয় Tesseract ওসিআর.

গভীর শিক্ষার কৌশলগুলিতে ইনপুট সাবজেক্ট করে মডেলটি দুটি পর্যায়ে উদ্ভূত হয়। প্রথম পর্যায়ে, তারা একটি পূর্বপ্রশিক্ষিত VGG-19 নেটওয়ার্কের ওজন ব্যবহার করেছে। তারা ব্যবহৃত VGG নেটওয়ার্কের সম্পূর্ণ সংযুক্ত স্তরগুলিকে 1×1 কনভোলিউশনাল স্তর দ্বারা প্রতিস্থাপন করেছে। সমস্ত কনভোলিউশনাল স্তরগুলিকে অনুসরণ করা হয় ReLU অ্যাক্টিভেশন এবং সম্ভাব্যতা 0.8 এর একটি ড্রপআউট স্তর। তারা দ্বিতীয় পর্যায়টিকে ডিকোডেড নেটওয়ার্ক বলে যা দুটি শাখা নিয়ে গঠিত। এটি অন্তর্দৃষ্টি অনুসারে যে কলাম অঞ্চলটি টেবিল অঞ্চলের একটি উপসেট। এইভাবে, একক এনকোডিং নেটওয়ার্ক টেবিল এবং কলাম উভয় অঞ্চলের বৈশিষ্ট্যগুলি ব্যবহার করে আরও ভাল নির্ভুলতার সাথে সক্রিয় অঞ্চলগুলিকে ফিল্টার করতে পারে। প্রথম নেটওয়ার্ক থেকে আউটপুট দুটি শাখায় বিতরণ করা হয়। প্রথম শাখায়, দুটি কনভোলিউশন অপারেশন প্রয়োগ করা হয় এবং চূড়ান্ত বৈশিষ্ট্য মানচিত্রটি মূল চিত্রের মাত্রা পূরণের জন্য উচ্চতর করা হয়। কলাম শনাক্ত করার জন্য অন্য শাখায়, একটি ReLU অ্যাক্টিভেশন ফাংশন সহ একটি অতিরিক্ত কনভোলিউশন স্তর রয়েছে এবং একটি ড্রপআউট স্তর রয়েছে যা আগে উল্লিখিত একই ড্রপআউট সম্ভাবনা রয়েছে। বৈশিষ্ট্য মানচিত্র একটি (1×1) কনভোলিউশন স্তরের পরে ভগ্নাংশভাবে স্ট্রাইডেড কনভোলিউশন ব্যবহার করে নমুনা তৈরি করা হয়েছে। নীচে স্থাপত্যের একটি চিত্র রয়েছে:

TableNet এর আর্কিটেকচার

আউটপুট: নথিগুলি মডেল ব্যবহার করে প্রক্রিয়া করার পরে, টেবিল এবং কলামগুলির মুখোশ তৈরি করা হয়। এই মুখোশগুলি চিত্র থেকে টেবিল এবং এর কলাম অঞ্চলগুলি ফিল্টার করতে ব্যবহৃত হয়। এখন Tesseract OCR ব্যবহার করে, তথ্যগুলি বিভক্ত অঞ্চল থেকে বের করা হয়। নীচে একটি ইমেজ দেখা যাচ্ছে যে মাস্কগুলি তৈরি করা হয়েছে এবং পরে টেবিল থেকে বের করা হয়েছে:

তারা একই মডেলের প্রস্তাব করেছে যেটি আইসিডিএআর-এর সাথে সূক্ষ্ম-টিউন করা হয়েছে যা মূল মডেলের চেয়ে ভাল পারফর্ম করেছে। সূক্ষ্ম-টিউনড মডেলের রিকল, যথার্থতা এবং F1-স্কোর হল যথাক্রমে 0.9628, 0.9697, 0.9662। আসল মডেলে একই ক্রমে 0.9621, 0.9547, 0.9583 রেকর্ড করা মেট্রিক রয়েছে। আসুন এখন আরও একটি স্থাপত্যে ডুব দেওয়া যাক।


DeepDeSRT

কাগজ: DeepDeSRT: ডকুমেন্ট ইমেজে টেবিলের সনাক্তকরণ এবং কাঠামোর স্বীকৃতির জন্য গভীর শিক্ষা

ভূমিকা: DeepDeSRT হল একটি নিউরাল নেটওয়ার্ক ফ্রেমওয়ার্ক যা নথি বা চিত্রের সারণীগুলি সনাক্ত করতে এবং বুঝতে ব্যবহৃত হয়। শিরোনামে উল্লিখিত হিসাবে এটির দুটি সমাধান রয়েছে:

  1. এটি নথির চিত্রগুলিতে টেবিল সনাক্তকরণের জন্য একটি গভীর শিক্ষা-ভিত্তিক সমাধান উপস্থাপন করে।
  2. এটি টেবিল গঠন শনাক্তকরণের জন্য একটি অভিনব গভীর শিক্ষা-ভিত্তিক পদ্ধতির প্রস্তাব করে, যেমন সনাক্ত করা টেবিলে সারি, কলাম এবং ঘরের অবস্থান চিহ্নিত করা।

প্রস্তাবিত মডেলটি সম্পূর্ণ ডেটা-ভিত্তিক, এতে নথি বা চিত্রের হিউরিস্টিক বা মেটাডেটার প্রয়োজন নেই। প্রশিক্ষণের ক্ষেত্রে একটি প্রধান সুবিধা হ'ল তারা বড় প্রশিক্ষণ ডেটাসেট ব্যবহার করেনি, পরিবর্তে তারা টেবিল সনাক্তকরণ এবং টেবিল কাঠামো স্বীকৃতি উভয়ের জন্য স্থানান্তর শিক্ষা এবং ডোমেন অভিযোজনের ধারণা ব্যবহার করেছিল।

ডেটাসেট: ব্যবহৃত ডেটাসেটটি হল একটি ICDAR 2013 টেবিল প্রতিযোগিতার ডেটাসেট যাতে মোট 67টি পৃষ্ঠা সহ 238টি নথি রয়েছে৷

আর্কিটেকচার:

  • টেবিল সনাক্তকরণ প্রস্তাবিত মডেলটি টেবিলগুলি সনাক্ত করার জন্য মৌলিক কাঠামো হিসাবে দ্রুত RCNN ব্যবহার করেছে। স্থাপত্য দুটি ভিন্ন অংশে বিভক্ত। প্রথম অংশে, তারা একটি তথাকথিত অঞ্চল প্রস্তাব নেটওয়ার্ক (RPN) দ্বারা ইনপুট চিত্রের উপর ভিত্তি করে অঞ্চল প্রস্তাব তৈরি করেছে। দ্বিতীয় অংশে, তারা ফাস্ট-আরসিএনএন ব্যবহার করে অঞ্চলগুলিকে শ্রেণীবদ্ধ করেছে। এই স্থাপত্যকে ব্যাক করার জন্য, তারা ব্যবহার করেছিল জেডএফনেট এবং VGG-16 এর ওজন।
  • গঠন স্বীকৃতি একটি টেবিল সফলভাবে শনাক্ত করার পরে এবং সিস্টেমের কাছে এর অবস্থান জানার পরে, এর বিষয়বস্তু বোঝার পরবর্তী চ্যালেঞ্জ হল সারি এবং কলামগুলি সনাক্ত করা এবং সনাক্ত করা যা টেবিলের শারীরিক গঠন তৈরি করে। তাই তারা VGG-16 এর ওজন সহ একটি সম্পূর্ণ সংযুক্ত নেটওয়ার্ক ব্যবহার করেছে যা সারি এবং কলাম থেকে তথ্য বের করে। নিচে DeepDeSRT এর আউটপুট রয়েছে:

আউটপুট:

টেবিল সনাক্তকরণের আউটপুট
কাঠামো স্বীকৃতির আউটপুট [6]

মূল্যায়ন ফলাফল প্রকাশ করে যে DeepDeSRT টেবিল সনাক্তকরণ এবং কাঠামো স্বীকৃতির জন্য অত্যাধুনিক পদ্ধতিগুলিকে ছাড়িয়ে গেছে এবং 1 সাল পর্যন্ত টেবিল সনাক্তকরণ এবং কাঠামো স্বীকৃতির জন্য যথাক্রমে 96.77% এবং 91.44% F2015-পরিমাপ অর্জন করেছে।


গ্রাফ নিউরাল নেটওয়ার্ক

কাগজ: গ্রাফ নিউরাল নেটওয়ার্ক ব্যবহার করে টেবিল স্বীকৃতি পুনর্বিবেচনা

ভূমিকা: এই গবেষণায়, ডিপ লার্নিং ল্যাবরেটরি, ন্যাশনাল সেন্টার অফ আর্টিফিশিয়াল ইন্টেলিজেন্স (এনসিএআই) এর লেখকরা টেবিল থেকে তথ্য বের করার জন্য গ্রাফ নিউরাল নেটওয়ার্কের প্রস্তাব করেছেন। তারা যুক্তি দিয়েছিলেন যে গ্রাফ নেটওয়ার্কগুলি এই সমস্যার জন্য আরও প্রাকৃতিক পছন্দ এবং আরও দুটি গ্রেডিয়েন্ট-ভিত্তিক গ্রাফ নিউরাল নেটওয়ার্কগুলি অন্বেষণ করেছে।

এই প্রস্তাবিত মডেলটি ভিজ্যুয়াল ফিচার এক্সট্রাকশনের জন্য কনভোলিউশনাল নিউরাল নেটওয়ার্ক এবং সমস্যা কাঠামোর সাথে মোকাবিলা করার জন্য গ্রাফ নেটওয়ার্ক উভয়ের সুবিধা একত্রিত করে।

ডেটাসেট: লেখকরা চারটি বিভাগে বিভক্ত 0.5 মিলিয়ন টেবিলের একটি নতুন বড় কৃত্রিমভাবে তৈরি ডেটাসেট প্রস্তাব করেছেন।

  1. চিত্রগুলি হল সরল চিত্র এবং কোন একত্রীকরণ ছাড়াই এবং রুলিং লাইন সহ
  2. চিত্রগুলির বিভিন্ন সীমানা প্রকার রয়েছে যার মাঝে মাঝে শাসক লাইনের অনুপস্থিতি রয়েছে
  3. কক্ষ এবং কলাম মার্জিং প্রবর্তন করে
  4. ক্যামেরা রৈখিক দৃষ্টিকোণ রূপান্তর সহ ছবি বন্দী করে

আর্কিটেকচার: তারা একটি অগভীর কনভোল্যুশনাল নেটওয়ার্ক ব্যবহার করেছে যা সংশ্লিষ্ট কনভোলিউশনাল ফিচার তৈরি করে। যদি আউটপুট বৈশিষ্ট্যগুলির স্থানিক মাত্রাগুলি ইনপুট চিত্রের মতো না হয় তবে তারা ইনপুট এবং আউটপুট মাত্রাগুলির মধ্যে অনুপাতের উপর নির্ভর করে রৈখিকভাবে ছোট করা অবস্থানগুলি সংগ্রহ করে এবং সেগুলিকে একটি ইন্টারঅ্যাকশন নেটওয়ার্কে পাঠায় যেখানে দুটি গ্রাফ নেটওয়ার্ক রয়েছে যা DGCNN নামে পরিচিত। এবং গ্র্যাভনেট। গ্রাফ নেটওয়ার্কের পরামিতি মূল CNN এর মতই। শেষ পর্যন্ত, তারা অভ্যন্তরীণভাবে মন্টে কার্লো ভিত্তিক অ্যালগরিদম ব্যবহার করে বের করা বিষয়বস্তুকে শ্রেণীবদ্ধ করতে একটি রানটাইম পেয়ার স্যাম্পলিং ব্যবহার করেছে। নীচে আউটপুট আছে:

আউটপুট:

গ্রাফ নিউরাল নেটওয়ার্ক দ্বারা উত্পন্ন আউটপুট

নীচে সারণীকৃত নির্ভুলতা সংখ্যা রয়েছে যা নেটওয়ার্কের চারটি বিভাগের জন্য নেটওয়ার্ক দ্বারা তৈরি করা হয়েছে ডেটা সেটটি অধ্যায়:


CGAN এবং জেনেটিক অ্যালগরিদম

কাগজ: শর্তসাপেক্ষ জেনারেটিভ অ্যাডভারসারিয়াল নেটওয়ার্ক এবং জেনেটিক অ্যালগরিদম ব্যবহার করে নথি থেকে টেবিল বের করা

ভূমিকা: এই গবেষণায়, লেখকরা নীচে-আপ (কোষ, সারি বা কলামে লাইনগুলিকে একীভূত করা) পদ্ধতি ব্যবহার করার পরিবর্তে একটি টপ-ডাউন পদ্ধতি ব্যবহার করেছেন।

এই পদ্ধতিতে, একটি জেনারেটিভ অ্যাডভারসারিয়াল নেটওয়ার্ক ব্যবহার করে, তারা টেবিলের চিত্রটিকে একটি মানসম্মত 'কঙ্কাল' টেবিল আকারে ম্যাপ করেছে। এই কঙ্কাল টেবিলটি টেবিলের বিষয়বস্তু ছাড়াই আনুমানিক সারি এবং কলামের সীমানা নির্দেশ করে। এর পরে, তারা একটি জেনেটিক অ্যালগরিদম দ্বারা অপ্টিমাইজ করা দূরত্ব পরিমাপ ব্যবহার করে প্রার্থীর সুপ্ত টেবিল কাঠামোর রেন্ডারিংগুলিকে কঙ্কাল কাঠামোতে মাপসই করে।

ডেটাসেট: লেখকরা তাদের নিজস্ব ডেটাসেট ব্যবহার করেছেন যাতে 4000টি টেবিল রয়েছে।

আর্কিটেকচার: প্রস্তাবিত মডেল দুটি অংশ নিয়ে গঠিত। প্রথম অংশে, ইনপুট চিত্রগুলি একটি শর্তসাপেক্ষ জেনারেটিভ অ্যাডভারসারিয়াল নিউরাল নেটওয়ার্ক ব্যবহার করে কঙ্কাল টেবিলে বিমূর্ত করা হয়। একটি GAN-এর আবার দুটি নেটওয়ার্ক রয়েছে, জেনারেটর যা এলোমেলো নমুনা তৈরি করে এবং বৈষম্যকারী যা বলে যে তৈরি করা ছবিগুলি নকল নাকি আসল। জেনারেটর জি হল একটি এনকোডার-ডিকোডার নেটওয়ার্ক যেখানে একটি ইনপুট ইমেজ ক্রমাগতভাবে ডাউনস্যাম্পলিং স্তরগুলির একটি সিরিজের মধ্য দিয়ে একটি বাধা স্তর পর্যন্ত পাস করা হয় যেখানে প্রক্রিয়াটি বিপরীত হয়। ডিকোডিং স্তরগুলিতে পর্যাপ্ত তথ্য প্রেরণের জন্য, স্কিপ সংযোগ সহ একটি U-নেট আর্কিটেকচার ব্যবহার করা হয় এবং স্তরগুলির মধ্যে i এবং n − i সংযুক্তির মাধ্যমে একটি স্কিপ সংযোগ যোগ করা হয়, যেখানে n হল স্তরগুলির মোট সংখ্যা এবং i হল স্তর সংখ্যা এনকোডারে একটি PatchGAN আর্কিটেকচার ডিসক্রিমিনেটর ডি এর জন্য ব্যবহার করা হয়। এটি প্যাচের স্কেলে আউটপুট ইমেজ গঠনকে শাস্তি দেয়। এগুলি একটি কঙ্কাল টেবিল হিসাবে আউটপুট উত্পাদন করে।

দ্বিতীয় অংশে, তারা প্রতিটি প্রার্থী এবং কঙ্কালের মধ্যে দূরত্বের পরিমাপ ব্যবহার করে উত্পন্ন কঙ্কাল চিত্রের সাথে প্রার্থীর সুপ্ত ডেটা স্ট্রাকচারের ফিটকে অপ্টিমাইজ করে। এভাবেই ছবিগুলোর ভেতরের লেখা বের করা হয়। নীচে স্থাপত্য চিত্রিত একটি চিত্র:

পদ্ধতির সাধারণ পরিকল্পিত

আউটপুট: আনুমানিক টেবিল কাঠামো তুলনা করে মূল্যায়ন করা হয় - সারি এবং কলাম সংখ্যা , উপরের বাম কোণার অবস্থান, সারির উচ্চতা এবং কলামের প্রস্থ

সারণী থেকে তথ্য বের করার সময় জেনেটিক অ্যালগরিদম 95.5% নির্ভুলতা সারি অনুসারে এবং 96.7% নির্ভুলতা কলাম অনুসারে দিয়েছে।


ডকুমেন্ট ডিজিটাইজ করতে হবে, রসিদ or চালান কিন্তু কোড করতে খুব অলস? উপর মাথা ন্যানোনেটস এবং বিনামূল্যে ওসিআর মডেলগুলি তৈরি করুন!


[কোড] ঐতিহ্যগত পদ্ধতি

এই বিভাগে, আমরা ডিপ লার্নিং এবং ওপেনসিভি ব্যবহার করে টেবিল থেকে তথ্য বের করার প্রক্রিয়া শিখব। আপনি এই ব্যাখ্যাটিকে একটি ভূমিকা হিসাবে ভাবতে পারেন, তবে, অত্যাধুনিক মডেল তৈরি করতে অনেক অভিজ্ঞতা এবং অনুশীলনের প্রয়োজন হবে। এটি আপনাকে বিভিন্ন সম্ভাব্য পন্থা এবং অ্যালগরিদম সহ কম্পিউটারকে কীভাবে প্রশিক্ষণ দিতে পারি তার মৌলিক বিষয়গুলি বুঝতে সাহায্য করবে।

সমস্যাটিকে আরও সুনির্দিষ্টভাবে বোঝার জন্য, আমরা কিছু মৌলিক পদ সংজ্ঞায়িত করি, যা পুরো নিবন্ধে ব্যবহার করা হবে:

  • পাঠ: একটি স্ট্রিং এবং পাঁচটি বৈশিষ্ট্য রয়েছে (শীর্ষ, বাম, প্রস্থ, উচ্চতা, ফন্ট)
  • লাইন: টেক্সট অবজেক্ট রয়েছে যা মূল ফাইলে একই লাইনে আছে বলে ধরে নেওয়া হয়
  • সপ্তাহের দিন: শুধুমাত্র একটি পাঠ্য বস্তু সহ লাইন অবজেক্ট।
  • মাল্টি-লাইন: একাধিক পাঠ্য বস্তু সহ লাইন অবজেক্ট।
  • মাল্টি-লাইন বাধা: অবিচ্ছিন্ন বহু-লাইন বস্তুর একটি সেট।
  • সারি: টেবিলে অনুভূমিক ব্লক
  • স্তম্ভ: টেবিলে উল্লম্ব ব্লক
  • কোষ: একটি সারি এবং কলামের ছেদ
  • সেল - প্যাডিং: ঘরের অভ্যন্তরীণ প্যাডিং বা স্থান।

OpenCV দিয়ে টেবিল সনাক্তকরণ

স্ক্যান করা টেবিল থেকে তথ্য বের করতে আমরা ঐতিহ্যগত কম্পিউটার ভিশন কৌশল ব্যবহার করব। এখানে আমাদের পাইপলাইন; আমরা প্রাথমিকভাবে সাধারণ ক্যামেরা ব্যবহার করে ডেটা (টেবিলগুলি যেখান থেকে আমাদের তথ্য বের করতে হবে) ক্যাপচার করি এবং তারপরে কম্পিউটার ভিশন ব্যবহার করে, আমরা সীমানা, প্রান্ত এবং কোষগুলি খুঁজে বের করার চেষ্টা করব। আমরা বিভিন্ন ফিল্টার এবং কনট্যুর ব্যবহার করব, এবং আমরা টেবিলের মূল বৈশিষ্ট্যগুলিকে হাইলাইট করব।

আমরা একটি টেবিলের একটি ইমেজ প্রয়োজন হবে. আমরা এটি একটি ফোনে ক্যাপচার করতে পারি বা বিদ্যমান কোনো ছবি ব্যবহার করতে পারি। নীচে কোড স্নিপেট,

file = r’table.png’
table_image_contour = cv2.imread(file, 0)
table_image = cv2.imread(file)

এখানে, আমরা একই ইমেজ ইমেজ দুটি ভেরিয়েবল লোড করেছি যেহেতু আমরা ব্যবহার করব টেবিল_ছবি_কনট্যুর লোড করা চিত্রের উপর আমাদের শনাক্ত করা কনট্যুর আঁকার সময়। আমরা আমাদের প্রোগ্রামে যে টেবিলটি ব্যবহার করছি তা নীচে দেওয়া হল:

টেবিলের ছবি

আমরা নামক একটি কৌশল নিয়োগ করব ইনভার্স ইমেজ থ্রেশহোল্ডিং যা প্রদত্ত ছবিতে উপস্থিত ডেটা বাড়ায়।

ret, thresh_value = cv2.threshold( table_image_contour, 180, 255, cv2.THRESH_BINARY_INV)

আরেকটি গুরুত্বপূর্ণ প্রিপ্রসেসিং ধাপ ইমেজ প্রসারণ. প্রসারণ হল বাইনারি ইমেজ (কালো এবং সাদা) তে প্রয়োগ করা একটি সাধারণ গণিত অপারেশন যা ক্রমশ ফোরগ্রাউন্ড পিক্সেলের অঞ্চলগুলির সীমানাকে প্রসারিত করে (অর্থাত সাদা পিক্সেল, সাধারণত)।

kernel = np.ones((5,5),np.uint8)
dilated_value = cv2.dilate(thresh_value,kernel,iterations = 1)

OpenCV-তে, আমরা পদ্ধতি ব্যবহার করি, কনট্যুর খুঁজুন বর্তমান ছবিতে কনট্যুর পেতে এই পদ্ধতিতে তিনটি আর্গুমেন্ট লাগে, প্রথমটি হল ডাইলেটেড ইমেজ (যে ইমেজটি ডাইলেটেড ইমেজ তৈরি করতে ব্যবহৃত হয় তা হল table_image_contour – FindContours পদ্ধতি শুধুমাত্র বাইনারি ইমেজ সমর্থন করে), দ্বিতীয়টি হল cv2.RETR_TREE যা আমাদেরকে কনট্যুর পুনরুদ্ধার মোড ব্যবহার করতে বলে, তৃতীয়টি হল  cv2.CHAIN_APPROX_SIMPLE যা কনট্যুর আনুমানিক মোড। দ্য কনট্যুর খুঁজুন দুটি মান আনপ্যাক করে, তাই আমরা নামযুক্ত আরও একটি ভেরিয়েবল যোগ করব যাজকতন্ত্র. যখন ছবিগুলি নেস্ট করা হয়, তখন কনট্যুরগুলি পরস্পর নির্ভরতা প্রকাশ করে৷ এই ধরনের সম্পর্কের প্রতিনিধিত্ব করার জন্য, অনুক্রম ব্যবহার করা হয়।

contours, hierarchy = cv2.findContours( dilated_value, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

কনট্যুরগুলি চিত্রটিতে ঠিক কোথায় ডেটা উপস্থিত রয়েছে তা চিহ্নিত করে৷ এখন, আমরা পূর্ববর্তী ধাপে যে কনট্যুর তালিকাটি গণনা করেছি তার উপর পুনরাবৃত্তি করি এবং পদ্ধতিটি ব্যবহার করে মূল চিত্রের মতো আয়তক্ষেত্রাকার বাক্সগুলির স্থানাঙ্কগুলি গণনা করি,  cv2.boundingRect. শেষ পুনরাবৃত্তিতে, আমরা পদ্ধতিটি ব্যবহার করে সেই বাক্সগুলিকে মূল চিত্র টেবিল_ইমেজে রাখি, cv2.rectangle().

for cnt in contours: x, y, w, h = cv2.boundingRect(cnt) # bounding the images if y < 50: table_image = cv2.rectangle(table_image, (x, y), (x + w, y + h), (0, 0, 255), 1) 

এটি আমাদের শেষ পদক্ষেপ। এখানে আমরা পদ্ধতি ব্যবহার করি উইন্ডো নামে নিষ্কাশিত বিষয়বস্তু এবং এটিতে এমবেড করা কনট্যুর সহ আমাদের টেবিল রেন্ডার করতে। নীচে কোড স্নিপেট আছে:

plt.imshow(table_image)
plt.show()
cv2.namedWindow('detecttable', cv2.WINDOW_NORMAL)

আউটপুট

উপরের কোড স্নিপেটে y এর মান 300 এ পরিবর্তন করুন, এটি আপনার আউটপুট হবে:

একবার আপনি টেবিলগুলি বের করে নিলে, আপনি টেসার্যাক্ট ওসিআর ইঞ্জিনের মাধ্যমে প্রতিটি কনট্যুর ক্রপ চালাতে পারেন, যার জন্য টিউটোরিয়াল পাওয়া যাবে এখানে. একবার আমাদের কাছে প্রতিটি পাঠ্যের বাক্স হয়ে গেলে, আমরা তাদের x এবং y স্থানাঙ্কের উপর ভিত্তি করে ক্লাস্টার করতে পারি যাতে তারা কোন সারি এবং কলামের অন্তর্গত।

এটি ছাড়াও, আপনার পিডিএফ ডকুমেন্টগুলিকে HTML ফাইলে পরিণত করতে PDFMiner ব্যবহার করার বিকল্প রয়েছে যা আমরা শেষ পর্যন্ত আমাদের টেবিল পেতে নিয়মিত এক্সপ্রেশন ব্যবহার করে পার্স করতে পারি। এখানে আপনি কিভাবে এটি করতে পারেন.


PDFMiner এবং Regex পার্সিং

ছোট নথি থেকে তথ্য বের করতে, গভীর শিক্ষার মডেল কনফিগার করতে বা কম্পিউটার ভিশন অ্যালগরিদম লিখতে সময় লাগে। পরিবর্তে, আমরা পাইথনে রেগুলার এক্সপ্রেশন ব্যবহার করতে পারি পাঠ্য নিষ্কাশন পিডিএফ নথি থেকে। এছাড়াও, মনে রাখবেন যে এই কৌশলটি ছবির জন্য কাজ করে না। আমরা এটি শুধুমাত্র HTML ফাইল বা PDF নথি থেকে তথ্য বের করতে ব্যবহার করতে পারি। এর কারণ হল, যখন আপনি একটি রেগুলার এক্সপ্রেশন ব্যবহার করছেন, তখন আপনাকে উৎসের সাথে বিষয়বস্তু মেলাতে হবে এবং তথ্য বের করতে হবে। চিত্রগুলির সাথে, আপনি পাঠ্যের সাথে মিলিত হতে পারবেন না এবং নিয়মিত অভিব্যক্তি ব্যর্থ হবে৷ এখন একটি সাধারণ পিডিএফ ডকুমেন্ট নিয়ে কাজ করা যাক এবং এতে থাকা টেবিলগুলি থেকে তথ্য বের করা যাক। নীচের ছবিটি দেওয়া হল:

প্রথম ধাপে, আমরা আমাদের প্রোগ্রামে পিডিএফ লোড করি। এটি হয়ে গেলে, আমরা পিডিএফকে HTML-এ রূপান্তর করি যাতে আমরা সরাসরি রেগুলার এক্সপ্রেশন ব্যবহার করতে পারি এবং এর মাধ্যমে টেবিল থেকে বিষয়বস্তু বের করতে পারি। এই জন্য, আমরা মডিউল ব্যবহার pdfminer এটি PDF থেকে সামগ্রী পড়তে এবং এটিকে একটি HTML ফাইলে রূপান্তর করতে সহায়তা করে।

নীচে কোড স্নিপেট আছে:

from pdfminer.pdfinterp import PDFResourceManager from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.converter import HTMLConverter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from cStringIO import StringIO
import re def convert_pdf_to_html(path): rsrcmgr = PDFResourceManager() retstr = StringIO() codec = 'utf-8' laparams = LAParams() device = HTMLConverter(rsrcmgr, retstr, codec=codec, laparams=laparams) fp = file(path, 'rb') interpreter = PDFPageInterpreter(rsrcmgr, device) password = "" maxpages = 0 #is for all caching = True pagenos=set() for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages,password=password,caching=caching, check_extractable=True): interpreter.process_page(page) fp.close() device.close() str = retstr.getvalue() retstr.close() return str

কোড ক্রেডিট: zevross

আমরা রেগুলার এক্সপ্রেশন এবং পিডিএফ সম্পর্কিত লাইব্রেরি সহ অনেক মডিউল আমদানি করেছি। পদ্ধতিতে রূপান্তর_pdf_to_html, আমরা পিডিএফ ফাইলের পাথ পাঠাই যাকে একটি HTML ফাইলে রূপান্তর করতে হবে। পদ্ধতির আউটপুট একটি HTML স্ট্রিং হবে যা নীচে দেখানো হয়েছে:

'<span style="font-family: XZVLBD+GaramondPremrPro-LtDisp; font-size:12px">Changing Echoesn<br>7632 Pool Station Roadn<br>Angels Camp, CA 95222n<br>(209) 785-3667n<br>Intake: (800) 633-7066n<br>SA </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> TX DT BU </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> RS RL OP PH </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> CO CJ n<br></span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> SF PI </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> AH SPn<br></span></div>' 

রেগুলার এক্সপ্রেশন হল প্যাটার্ন ম্যাচিং এর জন্য ব্যবহৃত সবচেয়ে কঠিন এবং দুর্দান্ত প্রোগ্রামিং কৌশলগুলির মধ্যে একটি। কোড ফরম্যাটিং, ওয়েব স্ক্র্যাপিং এবং বৈধকরণের উদ্দেশ্যে এগুলি বেশ কয়েকটি অ্যাপ্লিকেশনে ব্যাপকভাবে ব্যবহৃত হয়। আমরা আমাদের এইচটিএমএল টেবিল থেকে বিষয়বস্তু বের করা শুরু করার আগে, চলুন দ্রুত রেগুলার এক্সপ্রেশন সম্পর্কে কিছু জিনিস শিখি।

এই লাইব্রেরি বিভিন্ন অন্তর্নির্মিত পদ্ধতিগুলি মেলানোর এবং প্যাটার্নগুলি অনুসন্ধান করার জন্য প্রদান করে৷ নীচে কয়েকটি দেওয়া হল:

import re # Match the pattern in the string
re.match(pattern, string) # Search for a pattern in a string
re.search(pattern, string) # Finds all the pattern in a string
re.findall(pattern, string) # Splits string based on the occurrence of pattern
re.split(pattern, string, [maxsplit=0] # Search for the pattern and replace it with the given string
re.sub(pattern, replace, string)

আপনি সাধারণত রেগুলার এক্সপ্রেশনে যে অক্ষর/অভিব্যক্তি দেখতে পান সেগুলির মধ্যে রয়েছে:

  • [AZ] - যেকোনো বড় অক্ষর
  • d - অঙ্ক
  • w - শব্দের অক্ষর (অক্ষর, অঙ্ক এবং আন্ডারস্কোর)
  • s - হোয়াইটস্পেস (স্পেস, ট্যাব এবং হোয়াইটস্পেস)

এখন HTML এ একটি নির্দিষ্ট প্যাটার্ন খুঁজে বের করার জন্য, আমরা রেগুলার এক্সপ্রেশন ব্যবহার করি এবং তারপর সেই অনুযায়ী প্যাটার্ন লিখি। আমরা প্রথমে ডেটা বিভক্ত করি যাতে ঠিকানার অংশগুলি প্রোগ্রামের নাম (ANGELS CAMP, APPLE VALLEY, ইত্যাদি) অনুসারে পৃথক ব্লকে বিভক্ত করা হয়:

pattern = '(?<=<span style="font-family: XZVLBD+GaramondPremrPro-LtDisp; font-size:12px">)(.*?)(?=<br></span></div>)' for programinfo in re.finditer(pattern, biginputstring, re.DOTALL): do looping stuff…

পরে, আমরা প্রোগ্রামের নাম, শহর, রাজ্য এবং জিপ খুঁজে পাই যা সবসময় একই প্যাটার্ন অনুসরণ করে (টেক্সট, কমা, দুই-অঙ্কের বড় অক্ষর, 5 সংখ্যা (বা 5 সংখ্যার হাইফেন চার নম্বর) - এগুলি পিডিএফ ফাইলে উপস্থিত থাকে যা আমরা ইনপুট হিসাবে বিবেচনা করা হয়)। নিম্নলিখিত কোড স্নিপেট চেক করুন:

# To identify the program name
programname = re.search('^(?!<br>).*(?=\n)', programinfo.group(0))
# since some programs have odd characters in the name we need to escape
programname = re.escape(programname) citystatezip =re.search('(?<=>)([a-zA-Zs]+, [a-zA-Zs]{2} d{5,10})(?=\n)', programinfo.group(0))
mainphone =re.search('(?<=<br>)(d{3}) d{3}-d{4}x{0,1}d{0,}(?=\n)', programinfo.group(0))
altphones = re.findall('(?<=<br>)[a-zA-Zs]+: (d{3}) d{3}-d{4}x{0,1}d{0,}(?=\n)(?=\n)', programinfo.group(0)) 

এটি একটি সাধারণ উদাহরণ যা ব্যাখ্যা করে কিভাবে আমরা একটি রেগুলার এক্সপ্রেশন ব্যবহার করে PDF ফাইল থেকে তথ্য বের করি। সমস্ত প্রয়োজনীয় তথ্য বের করার পরে, আমরা একটি CSV ফাইলে এই ডেটা লোড করি।

def createDirectory(instring, outpath, split_program_pattern): i = 1 with open(outpath, 'wb') as csvfile: filewriter = csv.writer(csvfile, delimiter=',' , quotechar='"', quoting=csv.QUOTE_MINIMAL) # write the header row filewriter.writerow(['programname', 'address', 'addressxtra1', 'addressxtra2', 'city', 'state', 'zip', 'phone', 'altphone', 'codes']) # cycle through the programs for programinfo in re.finditer(split_program_pattern, instring, re.DOTALL): print i i=i+1 # pull out the pieces programname = getresult(re.search('^(?!<br>).*(?=\n)', programinfo.group(0))) programname = re.escape(programname) # some facilities have odd characters in the name

সুতরাং এটি একটি সহজ উদাহরণ ব্যাখ্যা করে যে আপনি কীভাবে আপনার নিষ্কাশিত এইচটিএমএলকে একটি CSV ফাইলে পুশ করতে পারেন। প্রথমে আমরা একটি CSV ফাইল তৈরি করি, আমাদের সমস্ত বৈশিষ্ট্য খুঁজে বের করি এবং একে একে তাদের নিজ নিজ কলামে পুশ করি। নীচে একটি স্ক্রিনশট আছে:

রেগুলার এক্সপ্রেশন ব্যবহার করে টেবিল থেকে বের করা আইটেমগুলির স্ক্রিনশট

কখনও কখনও, উপরের আলোচিত কৌশলগুলি জটিল বলে মনে হয় এবং সমস্ত টেবিলগুলি নেস্টেড এবং জটিল হলে প্রোগ্রামারদের জন্য চ্যালেঞ্জ তৈরি করে। এখানে, একটি সিভি বা ডিপ লার্নিং মডেল বেছে নিলে অনেক সময় সাশ্রয় হয়। চলুন দেখা যাক কী কী অসুবিধা এবং চ্যালেঞ্জগুলি এই ঐতিহ্যবাহী পদ্ধতিগুলির ব্যবহারে বাধা দেয়৷


ঐতিহ্যগত পদ্ধতির সাথে চ্যালেঞ্জ

এই বিভাগে, টেবিল নিষ্কাশন প্রক্রিয়াগুলি কোথায় ব্যর্থ হতে পারে সে সম্পর্কে আমরা গভীরভাবে শিখব, এবং ডিপ লার্নিং থেকে উদ্ভূত আধুনিক পদ্ধতিগুলি ব্যবহার করে এই বাধাগুলি অতিক্রম করার উপায়গুলি আরও বুঝতে পারব। যদিও এই প্রক্রিয়াটি একটি কেকওয়াক নয়। কারণ হল যে টেবিলগুলি সাধারণত স্থির থাকে না। ডেটা উপস্থাপন করার জন্য তাদের বিভিন্ন কাঠামো রয়েছে এবং টেবিলের ভিতরের ডেটা বিভিন্ন ফর্ম্যাটিং শৈলী (ফন্ট শৈলী, রঙ, ফন্টের আকার এবং উচ্চতা) সহ বহু-ভাষাগত হতে পারে। তাই একটি শক্তিশালী মডেল তৈরি করতে, এই সমস্ত চ্যালেঞ্জ সম্পর্কে সচেতন হওয়া উচিত। সাধারণত, এই প্রক্রিয়ায় তিনটি ধাপ রয়েছে: টেবিল সনাক্তকরণ, নিষ্কাশন এবং রূপান্তর। আসুন এক এক করে সব পর্যায়ের সমস্যাগুলো চিহ্নিত করি:


টেবিল সনাক্তকরণ

এই পর্যায়ে, আমরা চিহ্নিত করি যে প্রদত্ত ইনপুটে টেবিলগুলি ঠিক কোথায় উপস্থিত রয়েছে। ইনপুট যেকোনো ফরম্যাটের হতে পারে, যেমন ইমেজ, পিডিএফ/ওয়ার্ড ডকুমেন্ট এবং কখনো কখনো ভিডিও। আমরা সারণি সনাক্ত করতে বিভিন্ন কৌশল এবং অ্যালগরিদম ব্যবহার করি, হয় লাইন দ্বারা বা স্থানাঙ্ক দ্বারা। কিছু ক্ষেত্রে, আমরা কোনো সীমানা ছাড়াই টেবিলের মুখোমুখি হতে পারি, যেখানে আমাদের বিভিন্ন পদ্ধতি বেছে নিতে হবে। এগুলি ছাড়াও, এখানে আরও কয়েকটি চ্যালেঞ্জ রয়েছে:

  • চিত্র রূপান্তর: ইমেজ রূপান্তর লেবেল সনাক্তকরণ একটি প্রাথমিক পদক্ষেপ. এর মধ্যে রয়েছে টেবিলে উপস্থিত ডেটা এবং সীমানা বৃদ্ধি করা। টেবিলে উপস্থাপিত ডেটার উপর ভিত্তি করে আমাদের সঠিক প্রিপ্রসেসিং অ্যালগরিদম বেছে নিতে হবে। উদাহরণস্বরূপ, যখন আমরা চিত্রগুলির সাথে কাজ করছি, তখন আমাদের থ্রেশহোল্ডিং এবং এজ ডিটেক্টর প্রয়োগ করতে হবে। এই রূপান্তরের ধাপটি আমাদের আরও সুনির্দিষ্টভাবে বিষয়বস্তু খুঁজে পেতে সাহায্য করে। কিছু ক্ষেত্রে, কনট্যুরগুলি ভুল হতে পারে এবং অ্যালগরিদমগুলি চিত্রটি উন্নত করতে ব্যর্থ হয়। সুতরাং, সঠিক চিত্র রূপান্তর পদক্ষেপগুলি নির্বাচন করা এবং প্রিপ্রসেসিং অত্যন্ত গুরুত্বপূর্ণ।
  • ছবির মান: যখন আমরা তথ্য নিষ্কাশনের জন্য টেবিল স্ক্যান করি, তখন আমাদের নিশ্চিত করতে হবে যে এই নথিগুলি উজ্জ্বল পরিবেশে স্ক্যান করা হয়েছে যা ভাল মানের ছবি নিশ্চিত করে। যখন আলোর অবস্থা খারাপ হয়, তখন CV এবং DL অ্যালগরিদম প্রদত্ত ইনপুটগুলিতে টেবিল সনাক্ত করতে ব্যর্থ হতে পারে। আমরা যদি ডিপ লার্নিং ব্যবহার করি, তাহলে আমাদের নিশ্চিত করতে হবে যে ডেটাসেটটি সামঞ্জস্যপূর্ণ এবং মানক চিত্রগুলির একটি ভাল সেট আছে। যদি আমরা এই মডেলগুলিকে পুরানো চূর্ণবিচূর্ণ কাগজগুলিতে উপস্থিত টেবিলগুলিতে ব্যবহার করি, তবে প্রথমে আমাদের সেই ছবিগুলিতে প্রিপ্রসেস করতে হবে এবং গোলমাল দূর করতে হবে।
  • স্ট্রাকচারাল লেআউট এবং টেমপ্লেটের বিভিন্নতা: সমস্ত টেবিল অনন্য নয়। একটি কোষ উল্লম্বভাবে বা অনুভূমিকভাবে বেশ কয়েকটি কোষের উপর বিস্তৃত হতে পারে এবং বিস্তৃত কোষগুলির সংমিশ্রণগুলি বিশাল সংখ্যক কাঠামোগত বৈচিত্র তৈরি করতে পারে। এছাড়াও, কিছু কিছু পাঠ্যের বৈশিষ্ট্যের উপর জোর দেয়, এবং টেবিল লাইনগুলি টেবিলের গঠন বোঝার উপায়কে প্রভাবিত করতে পারে। উদাহরণস্বরূপ, অনুভূমিক রেখা বা বোল্ড টেক্সট টেবিলের একাধিক হেডারকে জোর দিতে পারে। টেবিলের গঠন কোষের মধ্যে সম্পর্ক দৃশ্যত সংজ্ঞায়িত করে। টেবিলের ভিজ্যুয়াল সম্পর্কগুলি গণনামূলকভাবে সম্পর্কিত কোষগুলি খুঁজে পাওয়া এবং তাদের থেকে তথ্য বের করা কঠিন করে তোলে। তাই টেবিলের বিভিন্ন স্ট্রাকচার পরিচালনায় শক্তিশালী অ্যালগরিদম তৈরি করা গুরুত্বপূর্ণ।
  • সেল প্যাডিং, মার্জিন, সীমানা: এগুলি যেকোন টেবিলের অপরিহার্য বিষয় - প্যাডিং, মার্জিন এবং সীমানা সবসময় একই হবে না। কিছু টেবিলের কোষের ভিতরে প্রচুর প্যাডিং থাকে এবং কিছুতে থাকে না। ভাল মানের ছবি ব্যবহার করা এবং প্রিপ্রসেসিং ধাপগুলি টেবিল নিষ্কাশন প্রক্রিয়াটিকে মসৃণভাবে চালাতে সাহায্য করবে।

টেবিল এক্সট্রাকশন

এটি সেই পর্যায় যেখানে টেবিল চিহ্নিত করার পর তথ্য বের করা হয়। বিষয়বস্তু কিভাবে গঠন করা হয় এবং সারণিতে কোন বিষয়বস্তু উপস্থিত রয়েছে সে সম্পর্কে অনেকগুলি কারণ রয়েছে। তাই একজন অ্যালগরিদম তৈরি করার আগে সমস্ত চ্যালেঞ্জ বোঝা গুরুত্বপূর্ণ।

  • ঘন সামগ্রী: কোষের বিষয়বস্তু হয় সংখ্যাসূচক বা পাঠ্য হতে পারে। যাইহোক, পাঠ্য বিষয়বস্তু সাধারণত ঘন হয়, এতে সংক্ষিপ্ত শব্দ এবং সংক্ষিপ্ত রূপ ব্যবহার করে পাঠ্যের অস্পষ্ট ছোট অংশ থাকে। সারণি বোঝার জন্য, পাঠ্যটিকে দ্ব্যর্থহীন করতে হবে এবং সংক্ষিপ্ত রূপ এবং সংক্ষিপ্ত শব্দগুলিকে প্রসারিত করতে হবে।
  • বিভিন্ন ফন্ট এবং ফরম্যাট: হরফগুলি সাধারণত বিভিন্ন শৈলী, রঙ এবং উচ্চতার হয়। আমাদের নিশ্চিত করতে হবে যে এগুলি জেনেরিক এবং সনাক্ত করা সহজ। কিছু হরফ পরিবার বিশেষ করে যেগুলি অভিশাপ বা হাতে লেখার অধীনে পড়ে, সেগুলো বের করা একটু কঠিন। তাই ভাল ফন্ট এবং সঠিক বিন্যাস ব্যবহার অ্যালগরিদমকে আরও সঠিকভাবে তথ্য সনাক্ত করতে সহায়তা করে।
  • একাধিক পৃষ্ঠা পিডিএফ এবং পৃষ্ঠা বিরতি: টেবিলের পাঠ্য লাইন একটি পূর্বনির্ধারিত থ্রেশহোল্ডের প্রতি সংবেদনশীল। এছাড়াও একাধিক পৃষ্ঠা জুড়ে বিস্তৃত কোষের সাথে, টেবিলগুলি সনাক্ত করা কঠিন হয়ে পড়ে। একটি মাল্টি-টেবিল পৃষ্ঠায়, একে অপরের থেকে বিভিন্ন টেবিল আলাদা করা কঠিন। স্পার্স এবং অনিয়মিত টেবিলের সাথে কাজ করা কঠিন। অতএব, গ্রাফিক রুলিং লাইন এবং বিষয়বস্তু বিন্যাস একসাথে টেবিল অঞ্চলগুলি চিহ্নিত করার জন্য গুরুত্বপূর্ণ উত্স হিসাবে ব্যবহার করা উচিত।

সারণী রূপান্তর

শেষ ধাপে টেবিল থেকে নিষ্কাশিত তথ্য রূপান্তর করে একটি সম্পাদনাযোগ্য নথি হিসেবে কম্পাইল করা, হয় এক্সেল বা অন্য সফ্টওয়্যার ব্যবহার করে। চলুন জেনে নিই কয়েকটি চ্যালেঞ্জ সম্পর্কে।

  • লেআউট সেট করুন: যখন স্ক্যান করা নথিগুলি থেকে টেবিলের বিভিন্ন বিন্যাস বের করা হয়, তখন বিষয়বস্তুকে ভিতরে ঠেলে দেওয়ার জন্য আমাদের একটি সঠিক টেবিল বিন্যাস থাকা দরকার। কখনও কখনও, অ্যালগরিদম কোষ থেকে তথ্য বের করতে ব্যর্থ হয়। অতএব, একটি সঠিক বিন্যাস ডিজাইন করাও সমান গুরুত্বপূর্ণ।
  • মান উপস্থাপনা নিদর্শন বিভিন্ন: কোষের মান বিভিন্ন সিনট্যাক্টিক উপস্থাপনা নিদর্শন ব্যবহার করে উপস্থাপন করা যেতে পারে। টেবিলের পাঠ্যটিকে 6 ± 2 হিসাবে বিবেচনা করুন। অ্যালগরিদম সেই নির্দিষ্ট তথ্য রূপান্তর করতে ব্যর্থ হতে পারে। তাই সংখ্যাসূচক মান নিষ্কাশন সম্ভাব্য উপস্থাপনা নিদর্শন জ্ঞান প্রয়োজন.
  • ভিজ্যুয়ালাইজেশনের জন্য প্রতিনিধিত্ব: সারণীগুলির জন্য বেশিরভাগ উপস্থাপনা বিন্যাস, যেমন মার্কআপ ভাষা যেখানে টেবিলগুলি বর্ণনা করা যেতে পারে, দৃশ্যায়নের জন্য ডিজাইন করা হয়েছে। অতএব, টেবিলগুলি স্বয়ংক্রিয়ভাবে প্রক্রিয়া করা চ্যালেঞ্জিং।

ঐতিহ্যগত কৌশল ব্যবহার করে টেবিল নিষ্কাশন প্রক্রিয়ার সময় আমরা যে চ্যালেঞ্জগুলোর মুখোমুখি হই। এখন দেখা যাক কিভাবে ডিপ লার্নিং এর সাহায্যে এগুলো কাটিয়ে উঠতে হয়। এটি বিভিন্ন সেক্টরে ব্যাপকভাবে গবেষণা করা হচ্ছে।



নথি, রসিদ বা ডিজিটাইজ করতে হবে চালান কিন্তু কোড করতে খুব অলস? উপর মাথা ন্যানোনেটস এবং বিনামূল্যে ওসিআর মডেলগুলি তৈরি করুন!


সারাংশ

এই নিবন্ধে, আমরা টেবিল থেকে তথ্য নিষ্কাশন সম্পর্কে বিশদভাবে পর্যালোচনা করেছি। আমরা দেখেছি কিভাবে আধুনিক প্রযুক্তি যেমন ডিপ লার্নিং এবং কম্পিউটার ভিশন সঠিক ফলাফলের জন্য শক্তিশালী অ্যালগরিদম তৈরি করে জাগতিক কাজগুলিকে স্বয়ংক্রিয় করতে পারে। প্রাথমিক বিভাগে, আমরা ব্যক্তি, শিল্প এবং ব্যবসায়িক ক্ষেত্রের কাজগুলিকে সহজতর করার জন্য টেবিল নিষ্কাশনের ভূমিকা সম্পর্কে শিখেছি, এবং PDF/HTML থেকে টেবিল নিষ্কাশন, ফর্ম অটোমেশন, চালান অটোমেশন, ইত্যাদি। আমরা থ্রেশহোল্ডিং, প্রসারণ এবং কনট্যুর সনাক্তকরণ কৌশল ব্যবহার করে টেবিলে তথ্যের অবস্থান খুঁজে পেতে কম্পিউটার ভিশন ব্যবহার করে একটি অ্যালগরিদম কোড করেছি। আমরা প্রচলিত কৌশলগুলি ব্যবহার করার সময় টেবিল সনাক্তকরণ, নিষ্কাশন এবং রূপান্তর প্রক্রিয়ার সময় আমরা যে চ্যালেঞ্জগুলির মুখোমুখি হতে পারি সেগুলি নিয়ে আলোচনা করেছি এবং এই সমস্যাগুলি কাটিয়ে উঠতে কীভাবে গভীর শিক্ষা আমাদের সাহায্য করতে পারে তা বলেছি। অবশেষে, আমরা কয়েকটি নিউরাল নেটওয়ার্ক আর্কিটেকচার পর্যালোচনা করেছি এবং প্রদত্ত প্রশিক্ষণ ডেটার উপর ভিত্তি করে টেবিল নিষ্কাশন অর্জনের তাদের উপায়গুলি বুঝতে পেরেছি।



আপডেট:
ডিপ লার্নিং ব্যবহার করে টেবিল সনাক্তকরণ এবং তথ্য নিষ্কাশনের বিভিন্ন পদ্ধতি সম্পর্কে আরও পড়ার উপাদান যুক্ত করা হয়েছে।

সময় স্ট্যাম্প:

থেকে আরো এআই এবং মেশিন লার্নিং