পরামিতি ocr. অপটিক্যাল ক্যারেক্টার রিকগনিশন প্রযুক্তি বলতে কী বোঝায়। সেগমেন্ট সেট স্বীকৃতি

2007 সালে কোম্পানি

জ্ঞানীয় প্রযুক্তি উপস্থাপিত অথবা এর জন্য নতুন জ্ঞানীয় ফর্ম 2007 স্বীকৃতি ইঞ্জিনআইডিআর - প্রযুক্তি CogniDocs.

জেনারেল ম্যানেজারজ্ঞানীয় প্রযুক্তি , রাশিয়ান বিজ্ঞান একাডেমির সংশ্লিষ্ট সদস্য ভ্লাদিমির লভোভিচ আরলাজারভ:IDR-এর উত্থান ছিল চিত্র স্বীকৃতি প্রযুক্তির বিকাশের দিকে একটি স্বাভাবিক পদক্ষেপ "চরিত্রের স্বীকৃতি থেকে নথি বোঝার জন্য।"

29.12.2009 Cognitive Technologies Yandex-এর ব্যবহারের অধিকার প্রদান করেছেপার্সার , যা আপনাকে একটি বাক্যের শব্দের সাথে কোন সিনট্যাকটিক সম্পর্ক যুক্ত তা নির্ধারণ করতে দেয়। টেক্সটের বড় কর্পোরার জন্য এর ব্যবহার অস্পষ্টতার সমাধান করার সময় ভাষার পরিসংখ্যানগত নিদর্শনগুলি (শব্দ এবং নির্মাণের ঘটনা) নির্ধারণ এবং অধ্যয়ন করা সম্ভব করে তোলে (উদাহরণস্বরূপ, "চাবিটি মেঝেতে পড়েছিল" এবং "চাবিটি মেঝেতে আটকে গিয়েছিল) পাথর") যা সিনট্যাকটিক পার্সিংয়ের সময়, সেইসাথে অবিচ্ছিন্ন বক্তৃতা স্বীকৃতির জন্য পরিসংখ্যানগত ভাষার মডেল তৈরি করার সময় উদ্ভূত হয়।

সঙ্গে সিনট্যাক্স বিশ্লেষক আপনাকে পাঠ্যের মধ্যে বিভিন্ন শব্দ এবং নির্মাণের সংঘটনের উপর ভিত্তি করে পাঠের তুলনা করতে এবং পাঠ্য বোঝার, পাঠ্যগুলি থেকে ডেটা বের করার পাশাপাশি অন্যান্য অ্যাপ্লিকেশনের পদ্ধতিগুলি বিকাশ করতে দেয়।

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

29.12.2009 জ্ঞানীয় প্রযুক্তি কোম্পানি"একটি কুকুর থেকে একটি বিড়ালকে আলাদা করা" এর ক্লাসিক সমস্যা সমাধান করার তার ক্ষমতা দেখিয়েছে।

1967 সালে, বিখ্যাত সোভিয়েত সাইবারনেটিসিস্টমিখাইল মইসিভিচ বনগার্ড "স্বীকৃতির সমস্যা" বইটি প্রকাশ করেছে ", প্যাটার্ন স্বীকৃতি তত্ত্বের সমস্যার জন্য নিবেদিত।

এটিতে একটি "একটি স্বীকৃতি প্রোগ্রামের জন্য সমস্যা" রয়েছে - শতাধিক স্বীকৃতি সমস্যার একটি তালিকা ("বোনগার্ড পরীক্ষা") যা মানুষের দ্বারা সহজেই সমাধান করা যায়, কিন্তু অ্যালগরিদম আকারে তাদের বর্ণনার জন্য স্পষ্ট মানদণ্ড নেই।

এই কাজগুলির মধ্যে একটি ছিল "একটি কুকুর থেকে একটি বিড়ালকে আলাদা করা," একটি কাজ যা যে কোনও শিশু, যে এখনও কথা বলতে শেখেনি, এক নজরে সমাধান করে।

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

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

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

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

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

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

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

একটু ইতিহাস

ABBYY FineReader-এর বর্তমান সংস্করণটি হল 11 নম্বর, অর্থাৎ অ্যাপ্লিকেশনটি বেশ দীর্ঘ বিকাশের পথ অতিক্রম করেছে এবং এমনকি এই প্রক্রিয়ার ইতিহাসও কিছু আগ্রহের বিষয়। একটি সম্পূর্ণ ক্রনিকল হওয়ার ভান না করে, আমি গত দশকে শুধুমাত্র প্রধান মাইলফলকগুলি দেব, যে সময়ে আমি কমবেশি FineReader অনুসরণ করেছি:

বছরসংস্করণপ্রধান বৈশিষ্ট্য
2003 7.0 25% পর্যন্ত স্বীকৃতির নির্ভুলতা বৃদ্ধি। এটি টেবিলে সবচেয়ে বেশি প্রতিফলিত হয়েছিল, বিশেষত জটিল, রঙিন কোষ, লুকানো বিভাজক ইত্যাদি সহ।
2005 8.0 স্বীকৃতি অ্যালগরিদমগুলির আরও অপ্টিমাইজেশান, প্রাথমিকভাবে নথি স্ক্যানের সাথে নয়, বরং এর সাথে কাজ করার লক্ষ্যে ডিজিটাল ফটোগ্রাফ. এই উদ্দেশ্যে, মূল প্রস্তুত করার জন্য অতিরিক্ত ফাংশন উপস্থিত হয়েছে (বিকৃতি দূর করা, লাইন সারিবদ্ধ করা ইত্যাদি)।
2007 9.0 ADRT প্রযুক্তির উত্থান, যা পুরো প্রক্রিয়াকৃত (মাল্টি-পৃষ্ঠা) নথির যৌক্তিক কাঠামোকে বিবেচনা করে এবং পুনরাবৃত্তিকারী উপাদানগুলি (হেডার এবং ফুটার) হাইলাইট করতে, "প্রবাহিত" বস্তু (টেবিল) ইত্যাদিকে সংযুক্ত করতে সক্ষম।
2009 10.0 ADRT এবং স্বীকৃতি অ্যালগরিদমগুলির আরও উন্নতি, 30% পর্যন্ত কম-রেজোলিউশনের আসল প্রক্রিয়াকরণের নির্ভুলতা বৃদ্ধি করে।
2011 11.0 প্রোগ্রামের গতিতে প্রধান মনোযোগ দেওয়া হয়। কালো এবং সাদা মোডের "সেকেন্ড কামিং", যা মূলে ভাল মানের 30% পর্যন্ত অতিরিক্ত ত্বরণ দেয়।

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

মৌলিক নীতি

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

  1. সততা- একটি বস্তুকে তার অংশগুলির একটি সংগ্রহ হিসাবে বিবেচনা করা হয় এবং (ভিজ্যুয়াল চিত্রগুলির জন্য) তাদের মধ্যে স্থানিক সম্পর্ক। পরিবর্তে, অংশগুলি শুধুমাত্র সমগ্র বস্তুর অংশ হিসাবে ব্যাখ্যা পায়। এই নীতিটি অনুমানগুলি তৈরি করতে এবং স্পষ্ট করতে সাহায্য করে, দ্রুত অসম্ভাব্যগুলিকে নির্মূল করে।
  2. উদ্দেশ্যপূর্ণতা- যেহেতু ডেটার যেকোন ব্যাখ্যা একটি নির্দিষ্ট লক্ষ্য অনুসরণ করে, তাই স্বীকৃতি হল একটি বস্তুর সম্বন্ধে হাইপোথিসিস সামনে রাখার এবং উদ্দেশ্যমূলকভাবে তাদের পরীক্ষা করার একটি প্রক্রিয়া। এই নীতি অনুসারে পরিচালিত একটি সিস্টেম কেবল আরও অর্থনৈতিক হবে না কম্পিউটিং শক্তি, কিন্তু ভুল করার সম্ভাবনাও কম।
  3. অভিযোজনযোগ্যতা- সিস্টেম অপারেশন চলাকালীন জমে থাকা তথ্য সংরক্ষণ করে এবং এটি পুনরায় ব্যবহার করে, অর্থাৎ এটি নিজেই শিখে যায়। এই নীতি আপনাকে নতুন জ্ঞান তৈরি করতে এবং সংগ্রহ করতে এবং একই সমস্যাগুলি বারবার সমাধান করা এড়াতে দেয়।

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

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

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

এডিআরটি

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

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

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

ADRT-কে ধন্যবাদ, FineReader, সংস্করণ 9.0 থেকে শুরু করে, নিম্নলিখিত কাঠামোগত অংশ এবং নথি বিন্যাস উপাদানগুলি সনাক্ত করতে, সনাক্ত করতে এবং পুনরুত্পাদন করতে শিখেছে:

  • প্রধান পাঠ্য;
  • হেডার এবং ফুটার;
  • পৃষ্ঠা সংখ্যা;
  • একই স্তরের শিরোনাম;
  • বিষয়বস্তুর সারণী;
  • পাঠ্য সন্নিবেশ;
  • অঙ্কন জন্য ক্যাপশন;
  • টেবিল
  • পাদটীকা;
  • স্বাক্ষর/সীল অঞ্চল;
  • ফন্ট এবং শৈলী।

স্বীকৃতি প্রক্রিয়া

এমডিএ অ্যালগরিদম অনুসারে, স্বীকৃতি নিজেই উপরের থেকে নীচে, পৃষ্ঠা স্তর থেকে শুরু হয়। এটা স্পষ্ট যে এই প্রক্রিয়ার প্রাথমিক পর্যায়ে যত বেশি ভুল সিদ্ধান্ত নেওয়া হবে, পরবর্তীতে তত বেশি হবে। এই কারণেই স্বীকৃতির নির্ভুলতা মূলের গুণমানের উপর অনেক বেশি নির্ভর করে, তবে তাদের প্রাক-প্রক্রিয়াকরণ অ্যালগরিদমগুলিও একটি উল্লেখযোগ্য প্রভাব ফেলতে পারে। এইভাবে, FineReader-এ রঙিন নথির জনপ্রিয়তা বাড়ার সাথে সাথে একটি অভিযোজিত বাইনারিকরণ পদ্ধতি উপস্থিত হয়েছিল। এবি) আপনি যদি অবিলম্বে কালো এবং সাদা মোডে একটি নথি স্ক্যান করেন যেখানে ওয়াটারমার্ক রয়েছে বা পাঠ্যটি একটি টেক্সচার্ড বা রঙের স্তরে অবস্থিত, তবে "আবর্জনা" অবিচ্ছিন্নভাবে চিত্রটিতে উপস্থিত হবে, যা তারপরে "উপযোগী" থেকে আলাদা করা বেশ কঠিন হবে। ” চিত্র (যেহেতু তার সম্পর্কে মূল তথ্য ইতিমধ্যে হারিয়ে গেছে)। এজন্য FineReader রঙ বা গ্রেস্কেল চিত্রগুলির সাথে কাজ করতে পছন্দ করে, স্বাধীনভাবে তাদের কালো এবং সাদাতে রূপান্তর করে (এই প্রক্রিয়াটিকে বাইনারিকরণ বলা হয়)। কিন্তু যে সব না. যেহেতু টেক্সট এবং ব্যাকগ্রাউন্ডের রঙ একটি পৃষ্ঠার মধ্যে এবং এমনকি পৃথক লাইনের মধ্যেও পরিবর্তিত হতে পারে, তাই AB কমবেশি একই বৈশিষ্ট্যযুক্ত শব্দগুলিকে শনাক্ত করে এবং স্বীকৃতির গুণমানের দৃষ্টিকোণ থেকে প্রতিটির জন্য সর্বোত্তম বাইনারাইজেশন প্যারামিটার নির্বাচন করে। এটি সঠিকভাবে অ্যালগরিদমের অভিযোজিততা, যা তাই এমডিএ-তে প্রতিক্রিয়া ব্যবহারের একটি উদাহরণ। এটা স্পষ্ট যে AB-এর কার্যকারিতা উত্স নথিগুলির নকশার উপর দৃঢ়ভাবে নির্ভর করে - ABBYY পরীক্ষার ভিত্তিতে, এই অ্যালগরিদমটি 14.5% দ্বারা স্বীকৃতির নির্ভুলতা বৃদ্ধি করেছে৷

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

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

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

কনট্যুর ক্লাসিফায়ার ( QC) প্রতিনিধিত্ব করে বিশেষ ক্ষেত্রে PC এর মধ্যে পার্থক্য রয়েছে যে এটি মূল চিত্র থেকে বের করা উদ্দিষ্ট প্রতীকের রূপ বিশ্লেষণ করে। সাধারণভাবে, এর নির্ভুলতা একটি পূর্ণাঙ্গ পিসির চেয়ে কম।

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

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

স্ট্রাকচারাল ডিফারেনশিয়াল ক্লাসিফায়ার ( KFOR) মূলত প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়েছিল হাতে লেখা পাঠ্য. এর কাজ হল "C" এবং "G" এর মতো অনুরূপ বস্তুর মধ্যে পার্থক্য করা। এইভাবে, SDK অক্ষরের প্রতিটি জোড়ার বৈশিষ্ট্যের উপর ভিত্তি করে তৈরি করা হয়েছে, এর শেখার প্রক্রিয়া MDC-এর তুলনায় আরও জটিল, এবং এর অপারেটিং গতি আগের সমস্ত শ্রেণীবিভাগের তুলনায় কম।

স্ট্রাকচারাল ক্লাসিফায়ার ( এসকে) ABBYY-এর জন্য গর্বের উৎস; এটি মূলত তথাকথিত হস্তলিখিত পাঠ্যকে স্বীকৃতি দেওয়ার জন্য তৈরি করা হয়েছিল, অর্থাৎ যখন একজন ব্যক্তি "মুদ্রিত" অক্ষরে লেখেন, কিন্তু পরে মুদ্রণের জন্য ব্যবহার করা হয়েছিল। এটি স্বীকৃতির চূড়ান্ত পর্যায়ে ব্যবহৃত হয় এবং খুব কমই কার্যকর হয়, যথা, পর্যাপ্ত উচ্চ সম্ভাবনা সহ কমপক্ষে দুটি অনুমান এটিতে পৌঁছালেই।

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

আর.কেপিসিQCMPC*KFOR**এসকে**
প্রথম তিনটি বিকল্পের জন্য যথার্থতা, %99,29 99,81 99,30 99,87 99,88 -
প্রথম বিকল্প অনুযায়ী নির্ভুলতা, %97,57 99,13 95,10 99,26 99,69 99,73

* ABBYY OCR অ্যালগরিদমের সম্পূর্ণ প্রথম স্তরের মূল্যায়ন
** উপযুক্ত ক্লাসিফায়ার যোগ করার পর সমগ্র অ্যালগরিদমের মূল্যায়ন

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

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

শুধু ওসিআর নয়

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

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

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

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

পদ্ধতির সুবিধার মধ্যে রয়েছে:

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

অ্যালগরিদমের উপরিভাগের বর্ণনা:

  • থ্রেশহোল্ড টি সহ স্থানীয় থ্রেশহোল্ড ইমেজ ফিল্টারিং (ল্যাপ্লাসিয়ান থ্রেশহোল্ড);
  • ফলস্বরূপ চিত্রের বিচ্ছিন্ন কোসাইন রূপান্তর;
  • উচ্চ-ফ্রিকোয়েন্সি বৈশিষ্ট্যগুলি ফিল্টার করা এবং নিম্ন এবং মাঝারি ফ্রিকোয়েন্সিগুলির জন্য একটি বিশেষ সমীকরণ সমাধান করা (রেটিনেক্স সমীকরণ);
  • বিপরীত বিযুক্ত কোসাইন রূপান্তর।
অ্যালগরিদম নিজেই টি প্যারামিটারের জন্য বেশ সংবেদনশীল, তবে আমরা এটির একটি অভিযোজন ব্যবহার করেছি:
  • আমরা T=1,2,4,8 এর জন্য Retinex(T) গণনা করি
  • Retinex ফলাফলের মধ্যে পিক্সেল-বাই-পিক্সেল মিডিয়ান ফিল্টারিং করা হচ্ছে
ওপেনসিভি কীভাবে সাহায্য করতে পারে: বিচ্ছিন্ন কোসাইন রূপান্তর গণনা করার জন্য একটি প্রস্তুত ফাংশন রয়েছে:
void dct(const Mat&src, Mat&dst, int flags=0); // পতাকা = DCT_INVERSE বিপরীত DCT এর জন্য
এবং এটি libfftw এর অনুরূপ গতির চেয়ে খারাপ কাজ করে না, যদিও আমি সাধারণ ক্ষেত্রে এটি দাবি করতে পারি না (কোর i5, কোর ডুওতে পরীক্ষা করা হয়েছে)।

মূল চিত্রের জন্য, উপরের পদ্ধতিটি একটি চমত্কার সুন্দর ফলাফল দেয়:

এখন আমরা মোটামুটিভাবে বুঝতে পারি যে প্রি-ফিল্টারিং কি করা উচিত, এবং আমাদের ইতিমধ্যে একটি প্যারামিটার আছে যা প্রতিক্রিয়া পদ্ধতিতে পরিবর্তন করতে পারে: ব্যবহৃত ফিল্টারের সূচক.

এখানে এবং আরো: আসলে, অবশ্যই, আরও অনেক প্যারামিটার রয়েছে (উদাহরণস্বরূপ, সেই "জাদু" টি = 1,2,4,8), কিন্তু আমাদের বিরক্ত না করার জন্য, আমরা এখন সেগুলি সম্পর্কে কথা বলব না। সেগুলির মধ্যে অনেকগুলি রয়েছে, সেগুলির উল্লেখগুলি মেশিন লার্নিং বিভাগে উপস্থিত হবে, তবে আমি সুনির্দিষ্ট বিষয়গুলি বাদ দেব যাতে প্যারামিটারের সংখ্যা সহ উপস্থাপনাটি ওভারলোড না হয়৷

রাস্টার স্তর: বাইনারিকরণ

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

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

শক্তিশালী থ্রেশহোল্ডিং দুর্বল থ্রেশহোল্ডিং

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

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

ধারণাটি বেশ কার্যকর যখন বিভিন্ন থ্রেশহোল্ড ফিল্টারিং পদ্ধতি ব্যবহার করা হয় এবং OpenCV বিল্ট-ইন অভিযোজিত ফিল্টারিং ফাংশনগুলির উপস্থিতিতে "সহায়তা" করে:
cv::adaptiveThreshold(চিত্র, strongBinarized, 255, cv::ADAPTIVE_THRESH_GAUSSIAN_C, CV_THRESH_BINARY, strongBinarizeKernelSize, strongBinarizeTreshold); cv::threshold(image, otsuBinarized, otsuThresholdValue, 255, cv::THRESH_OTSU);
যদি ফলস্বরূপ চিত্রটিতে কোনও অংশই না থাকে, তবে সম্ভবত একটি ফিল্টারিং ত্রুটি রয়েছে এবং এটি একটি ভিন্ন প্রি-ফিল্টার বিবেচনা করা উচিত (“ প্রতিক্রিয়া"; ইঞ্জিন কাঠামোর ছবিতে "ওই" নীল তীর)।

আদিম স্তর: ভেক্টরাইজেশন

স্বীকৃতি প্রক্রিয়ার পরবর্তী ধাপ হল পিক্সেলের সেটকে (সেগমেন্ট) আদিম রূপে রূপান্তর করা। আদিমগুলি পরিসংখ্যান হতে পারে - একটি বৃত্ত, অংশগুলির একটি সেট, একটি আয়তক্ষেত্র (প্রিমিটিভের নির্দিষ্ট সেট সমস্যার সমাধানের উপর নির্ভর করে), বা প্রতীক।

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

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

  • আকারে ভেক্টরাইজেশন অক্ষর "এইচ" 0.1 এর একটি মেট্রিক (দূরত্ব) মান সহ (সম্ভবত এটি H);
  • আকারে ভেক্টরাইজেশন অক্ষর "R" 4.93 এর মেট্রিক মান সহ (সম্ভাব্য নয়, তবে সম্ভব এটি R);
  • ভেক্টরাইজেশন তিনটি সেগমেন্ট আকারে"|", "-", "|" 0.12 এর মেট্রিক মান সহ (এটা খুবই সম্ভব যে এই তিনটি অংশ);
  • ভেক্টরাইজেশন হিসাবে আয়তক্ষেত্রসাইড ডাইমেনশন x, y সহ মেট্রিক মান 45.4 (একটি আয়তক্ষেত্রের মত দেখায় না);
  • ভেক্টরাইজেশন হিসাবে বৃত্তমেট্রিক মান +inf সহ (একটি বৃত্ত না হওয়ার নিশ্চয়তা);
ভেক্টরাইজেশনের একটি তালিকা পাওয়ার জন্য, প্রতিটি নির্দিষ্ট শ্রেণীর জন্য স্বীকৃতি আদিম প্রয়োগ করা প্রয়োজন।
সেগমেন্ট সেট স্বীকৃতি
সাধারণত একটি রাস্টার এলাকাকে নিম্নরূপ সেগমেন্টের একটি সেটে ভেক্টরাইজ করা হয়:

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

প্রথমত, এটি বেশ দৃঢ়ভাবে নির্ভর করে গড় রেখার বেধের উপর (স্বজ্ঞাতভাবে - রেখার বেধ যত বেশি হবে, কম বিশদ; একটি ধারালো পেন্সিল দিয়ে আঁকা একটি অঙ্কন একটি মার্কার দিয়ে আঁকার চেয়ে অনেক বেশি বিশদ হতে পারে), যা আমরা ব্যবহার করেছি আমাদের বাস্তবায়ন:
approxEps = গড় লাইন থিকনেস * magicLineVectorizationFactor;
দ্বিতীয়ত, অবজেক্টের শ্রেণীবিভাগের জন্য উপরে বর্ণিত পদ্ধতিকে বিবেচনায় নিয়ে, "অধিক উপযুক্ত একটি" নির্বাচন করার জন্য যৌক্তিক কাঠামো বিশ্লেষণের পর্যায়ে বিভিন্ন আনুমানিক ইপ্স (একটি নির্দিষ্ট পদক্ষেপের সাথে) সহ বিভাগগুলিকে ভেক্টরাইজ করার চেষ্টা করা সম্ভব।

বৃত্তের স্বীকৃতি
বেশ সহজ:
  • আমরা বৃত্তের কেন্দ্র খুঁজছি (বিন্দুর স্থানাঙ্কের গড়) - (x,y);
  • আমরা ব্যাসার্ধ খুঁজছি (কেন্দ্র থেকে বিন্দুর গড় দূরত্ব) - r;
  • আমরা ত্রুটিটি গণনা করি: কেন্দ্র (x,y) এবং ব্যাসার্ধ r এবং বেধ গড়Linethickness সহ একটি বৃত্তের বিন্দু দ্বারা গড় দূরত্ব;
  • আমরা বৃত্তে বিরতির জন্য অতিরিক্ত শাস্তি গণনা করি: magicCirclePenalty * (বিরতির %)।
নির্বাচনের পর ম্যাজিক সার্কেল পেনাল্টিএই কোডের সাথে, সেইসাথে অনুরূপ আয়তক্ষেত্রের স্বীকৃতির সাথে একেবারে কোন সমস্যা ছিল না।
চরিত্রের স্বীকৃতি
অনেক বেশি আকর্ষণীয় অংশ হল কারণ... এটি একটি চ্যালেঞ্জ সমস্যা - এমন একটি অ্যালগরিদম নেই যা দাবি করে যে "সবচেয়ে সর্বোত্তম" স্বীকৃতির কার্যকারিতা রয়েছে৷ খুব সহজ পদ্ধতি আছে যেগুলির উপর নির্ভর করে, এবং আরও জটিল পদ্ধতি রয়েছে, উদাহরণস্বরূপ ব্যবহার করা, কিন্তু কোনটিই "ভাল" স্বীকৃতির গুণমানের গ্যারান্টি দেয় না।

তাই, অক্ষর শনাক্তকরণ এবং একটি সমষ্টিগত ফলাফল নির্বাচনের জন্য বেশ কয়েকটি সাবসিস্টেম ব্যবহার করার সিদ্ধান্ত নেওয়া বেশ স্বাভাবিক বলে মনে হয়েছিল: যদি p1 = মেট্রিক মান যা অ্যালগরিদম 1 এলাকা A দ্বারা অক্ষর s হিসাবে স্বীকৃত হয়, এবং p2 = মেট্রিক মান যা অ্যালগরিদম 2 দ্বারা এলাকা A অক্ষর s হিসাবে স্বীকৃত হয়, তারপর চূড়ান্ত মান p = f(p1,p2)। আমরা দুটি অ্যালগরিদম নির্বাচন করেছি যেগুলির সুবিধামত তুলনীয় মান, উচ্চ গতি এবং পর্যাপ্ত স্থিতিশীলতা রয়েছে:

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

"স্বীকৃতি" অপারেশনটি স্বীকৃত অঞ্চলের জন্য ফুরিয়ার বর্ণনাকারী গণনা করে এবং সমর্থিত অক্ষরের জন্য দায়ী পূর্বনির্ধারিত সেটগুলির সাথে তাদের তুলনা করে। বর্ণনাকারীর দুটি সেট থেকে একটি মেট্রিক মান পেতে, কনভোলিউশন নামে একটি অপারেশন করা প্রয়োজন: d = sum((d1[i]-d2[i])*w[i], i=1,N), যেখানে d1 এবং d2 হল বর্ণনাকারী ফুরিয়ারের সেট, এবং w হল প্রতিটি সহগের জন্য ওজনের ভেক্টর (আমরা এটি পেয়েছি মেশিন লার্নিং) তুলনামূলক চিহ্নের স্কেলের ক্ষেত্রে কনভোলিউশন মান অপরিবর্তনীয়। উপরন্তু, ফাংশন উচ্চ-ফ্রিকোয়েন্সি গোলমাল প্রতিরোধী (এলোমেলো পিক্সেল যা চিত্রের "জ্যামিতি" পরিবর্তন করে না)।

OpenCV এই পদ্ধতি বাস্তবায়নে বেশ সহায়ক; অবজেক্টের বাহ্যিক কনট্যুরগুলি পাওয়ার জন্য একটি রেডিমেড ফাংশন রয়েছে:
cv::find Contours(ছবি, স্টোরেজ, CV_RETR_EXTERNAL);
এবং বিচ্ছিন্ন ফুরিয়ার রূপান্তর গণনা করার জন্য একটি ফাংশন আছে:
cv::dft(src, dst);
যা অবশিষ্ট থাকে তা হল কনভোলিউশন এবং ইন্টারমিডিয়েট টাইপ রূপান্তর বাস্তবায়ন করা, বর্ণনাকারীর একটি সেট সংরক্ষণ করা।

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

বর্গাকার বিচ্যুতি মাস্কের উপর ভিত্তি করে অক্ষর স্বীকৃতি
এটি একটি মোটামুটি স্বজ্ঞাত সমাধান, যা দেখা যাচ্ছে, যেকোনো রেজোলিউশনের মুদ্রিত অক্ষরের জন্য দুর্দান্ত কাজ করে; যদি আমাদের কাছে একই রেজোলিউশনের দুটি কালো এবং সাদা ছবি থাকে, তবে আমরা পিক্সেল দ্বারা পিক্সেল তুলনা করতে শিখতে পারি।

চিত্র 1 এর প্রতিটি বিন্দুর জন্য, একটি জরিমানা গণনা করা হয়: একই রঙের চিত্র 2-এর বিন্দু থেকে ন্যূনতম দূরত্ব। সেই অনুযায়ী, মেট্রিক হল সাধারণীকরণ সহগ সহ জরিমানার সমষ্টি। এই পদ্ধতিটি গোলমাল সহ কম-রেজোলিউশনের চিত্রগুলিতে অনেক বেশি স্থিতিশীল হবে - একটি পার্শ্ব দৈর্ঘ্য n সহ একটি চিত্রের জন্য, সংখ্যায় k শতাংশ পর্যন্ত পৃথক পিক্সেলগুলি সবচেয়ে খারাপ ক্ষেত্রে k * n এর বেশি মেট্রিককে "লুণ্ঠিত" করবে না, এবং ব্যবহারিক ক্ষেত্রে - k এর বেশি নয়, কারণ বেশিরভাগ ক্ষেত্রে তারা চিত্রের "সঠিক" পিক্সেলের সংলগ্ন।

পদ্ধতির অসুবিধা, উপস্থাপনায় যেমন আমি বর্ণনা করেছি, তা হবে কম গতিকাজ প্রতিটি পিক্সেলের জন্য (O(n 2)), আমরা অন্য ছবির (O(n 2)) একই রঙের একটি পিক্সেল থেকে ন্যূনতম দূরত্ব গণনা করি, যা O(n 4) দেয়।

তবে প্রাক-গণনার মাধ্যমে এটি বেশ সহজে চিকিত্সা করা যেতে পারে: আসুন দুটি মুখোশ তৈরি করি penalty_white(x,y) এবং penalty_black(x,y) যা পিক্সেল (x, y) যথাক্রমে সাদা বা কালো হতে দেখা যাচ্ছে। তারপরে "স্বীকৃতি" (অর্থাৎ মেট্রিক গণনা) প্রক্রিয়াটি O(n 2) এর সাথে ফিট করে:
জন্য (int y = 0; y< img.cols; y++) { for (int x = 0; x < img.rows; x++) { penalty += (image(y,x) == BLACK) ? penalty_black(y,x) : penalty_white(y,x); } }
যা অবশিষ্ট থাকে তা হল প্রতিটি অক্ষরের প্রতিটি বানানের জন্য মুখোশ (দণ্ড_সাদা, জরিমানা_কালো) সংরক্ষণ করা এবং স্বীকৃতি প্রক্রিয়া চলাকালীন সেগুলিকে সাজানো। OpenCV ব্যবহারিকভাবে এই অ্যালগরিদম বাস্তবায়নে আমাদের সাহায্য করবে না, কিন্তু এটা তুচ্ছ। কিন্তু, আমি আগেই বলেছি, তুলনা করা ছবিগুলি অবশ্যই একই রেজোলিউশনের হতে হবে, তাই একটিকে অন্যটিতে রূপান্তর করতে আপনার একটি ফাংশনের প্রয়োজন হতে পারে:
cv::resize(temp, temp, cv::Size(size_x, size_y), 0.0, 0.0);
যদি আমরা অক্ষর স্বীকৃতির সাধারণ প্রক্রিয়ায় ফিরে আসি, তাহলে উভয় পদ্ধতি চালানোর ফলে আমরা মেট্রিক মানগুলির একটি সারণী পাই:

স্বীকৃতি মান একটি উপাদান নয়, পুরো টেবিল, যেখান থেকে আমরা জানি যে সর্বোচ্চ সম্ভাবনার সাথে এটি "C" অক্ষর, তবে সম্ভবত এটি "0", বা "6" (বা "O", বা " c", যা স্ক্রিনে ফিট করেনি)। এবং যদি এটি একটি বন্ধনী হয়, তাহলে এটি একটি বন্ধের চেয়ে একটি খোলার হওয়ার সম্ভাবনা বেশি। তবে এখনও পর্যন্ত আমরা জানি না এটি আদৌ একটি প্রতীক কিনা...

আদিম স্তর: বিচ্ছেদ

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

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

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

এবং তাই, আমরা ব্যক্তিকে জিজ্ঞাসা করি এটি কী -
অবশ্যই এটি একটি বাঁকা লাইন মাত্র। কিন্তু যদি আপনি এটিকে প্রতীক হিসাবে বা সরলরেখার অংশগুলির একটি সেট হিসাবে শ্রেণীবদ্ধ করতে চান তবে এটি কী? তারপরে এটি সম্ভবত "l" অক্ষরটি বা একটি কোণে দুটি সরল রেখা (কোণটি কেবল বৃত্তাকার আঁকা হয়)। কিন্তু কিভাবে নির্বাচন করবেন সঠিক ব্যাখ্যা? মেশিনটি পূর্ববর্তী ধাপে আনুমানিক সমস্যার সমাধান করতে পারত, এবং সম্ভাব্যতা 1/2 দিয়ে সঠিকভাবে সমাধান করতে পারত। কিন্তু 1/2 হল কাঠামোগত তথ্যের স্বীকৃতির সিস্টেমের জন্য সম্পূর্ণ ব্যর্থতা, আমরা কেবল কাঠামোটি নষ্ট করব, এটি বৈধতা পাস করবে না, আমাদের "ত্রুটি" সংশোধন করতে হবে, যা একটি সুখী সম্ভাবনার সাথে সত্যের সাথে মিলিত নাও হতে পারে। সমস্যা আমরা কিছু পেতে পারি।

কিন্তু আমরা যদি প্রতিবেশী বস্তুর দিকে তাকাই, তাহলে অনেক কিছুই পরিষ্কার হয়ে যেতে পারে:

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

আরেকটি বিকল্প আছে:

আমরা একটি লাইন দেখেছি যা একেবারে সোজা, আমরা একটি "আদর্শ" চিহ্ন এর পাশে দাঁড়িয়ে থাকতে দেখেছি, আমাদের বস্তুর আকার একই, যদিও কম ভাল আঁকা হয়েছে। এখানে নিশ্চিতভাবে বলা কঠিন, কিন্তু যদি আমরা জানি যে সংযোগগুলি বস্তুকে সংযুক্ত করতে হবে, এবং আমাদের বস্তুর প্রান্তের দিক থেকে কিছু নেই, তাহলে এটি সংযোগ হওয়ার সম্ভাবনা কম। এবং যদি আমরা মনে রাখি যে "Cl" (ক্লোরিন) আমাদের বিষয় এলাকায় প্রতীকগুলির একটি খুব সম্ভবত সংমিশ্রণ, তাহলে হ্যাঁ, এটি এখনও "l" চিহ্ন।

এখানে আমি ব্যবহারিকভাবে একটি মুক্ত শৈলীতে পৃথকীকরণ অ্যালগরিদমের রূপরেখাটি তুলে ধরেছি। এবং এখন আরও আনুষ্ঠানিকভাবে।

থ্রেশহোল্ড অংশ:

  • যদি একটি বস্তুর জন্য মেট্রিক্সের সারণীতে শুধুমাত্র একটি মান "ভাল" (শূন্যের কাছাকাছি) হয়, এবং অন্য সবগুলি অন্তত একটি ধ্রুবক C দ্বারা পৃথক হয়, তাহলে আমরা এটিকে উপযুক্ত শ্রেণী দিয়ে চিহ্নিত করি।
এটি দুর্দান্ত, তবে এটি সর্বদা ঘটে না।

অবশিষ্ট বস্তুর জন্য আমরা পরিসংখ্যানগত বিশ্লেষণ অবলম্বন করি:

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

তারপরে আমরা একটি শ্রেণিবিন্যাস গাছ তৈরি করি, যার নোডগুলিতে নিম্নলিখিত শর্তগুলি থাকতে পারে: (যদি কোনও বস্তুর উচ্চতা গড়_উচ্চতা_অক্ষর-1 থেকে গড়_উচ্চতা_অক্ষর +2 পর্যন্ত হয় এবং একটি রেখার 3*গড়_বক্রতা_এর বেশি বক্রতা থাকে এবং এর দৈর্ঘ্য থাকে রেখার গড় দৈর্ঘ্য 0.5*র কম), তারপর এটি একটি প্রতীক হিসাবে চিহ্নিত। শ্রেণিবিন্যাস গাছ নির্মাণের পদ্ধতিটি ভালভাবে বর্ণনা করা হয়েছে, এবং আমি নিজেকে এটি পুনরাবৃত্তি না করার অনুমতি দেব।

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

অবশিষ্ট বস্তুর জন্য, আমরা স্থানীয় বিশ্লেষণ প্রয়োগ করি:

  • আসুন নির্বাচিত বস্তুর জন্য সমস্ত প্রতিবেশীদের সন্ধান করি;
  • যদি কিছু প্রতিবেশীর ইতিমধ্যেই নির্বাচিত শ্রেণী থাকে, তাহলে আমরা স্থানীয় কনফিগারেশনের সম্ভাব্যতা সারণী থেকে আরও সম্ভাব্য একটি নির্বাচন করব;
  • অতিরিক্তভাবে: যদি কোনও বস্তুর প্রান্তের দিকে অন্য কোনও বস্তু না থাকে তবে এটি একটি প্রতীক।
অবশিষ্ট অবজেক্টের জন্য, আমরা "ডিফল্ট" ক্লাস নির্বাচন করব - যেটি মেট্রিক মানের কাছাকাছি।

সমস্ত যন্ত্রণার ফলস্বরূপ, আমরা চিত্রটিকে বস্তুর একটি সেটে বিভক্ত করতে পারি যেগুলিকে প্রতীক বলে মনে করা হয় এবং কাঠামোর জন্য দায়ী একটি অংশ।

কাঠামোগত স্তর

এখন যা অবশিষ্ট থাকে তা হল উপাদানগুলির একটি সেট থেকে একটি সমাপ্ত কাঠামো একত্রিত করা। এখানে, অবশ্যই, অ্যালগরিদমগুলি নিজেরাই বিষয় এলাকার উপর ব্যাপকভাবে নির্ভর করতে শুরু করে।

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

স্ট্রাকচার গ্রাফ প্রসেসিং
প্রথম গুরুত্বপূর্ণ পদক্ষেপ, আসলে এই গ্রাফ প্রাপ্ত করা হয়. ভেক্টরাইজেশনের পরে, আমাদের কাছে যা আছে তা হল আলাদা আলাদা অংশগুলির একটি সেট, যার প্রত্যেকটির একটি "শুরু" এবং একটি "শেষ" রয়েছে যা আমি কাঠামোর চিত্রে বৃত্ত দিয়ে চিহ্নিত করেছি:


পরিসংখ্যানগতভাবে, আমরা সম্ভাব্য আঠালোর গড় ব্যাসার্ধ নির্ধারণ করি এবং সেই অংশগুলিকে "সংগ্রহ" করি যার শেষগুলি এই ব্যাসার্ধের মধ্যে গ্রাফের শীর্ষবিন্দুতে অবস্থিত:


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

তারপরে আমরা খুব ছোট প্রান্তগুলি সরিয়ে ফেলি:


যে প্রান্তগুলি খুব ছোট সেগুলি আর্টিফ্যাক্ট (বাঁক, পিক্সেল শব্দ) সহ ভেক্টরাইজিং লাইনের ফলাফল। আমাদের একটি গড় প্রতীক আকার আছে; আমরা অনুমান করতে পারি যে প্রতীকের আকারের চেয়ে ছোট বন্ডের দৈর্ঘ্য অসম্ভব (কিছু ব্যতিক্রম যা একটি বিশেষ উপায়ে পরীক্ষা করা হয় - রাসায়নিক নির্দিষ্টতা)।

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

ট্যাগ সমাবেশ এবং প্রক্রিয়াকরণ
চিহ্নগুলির জন্য, তাদের গোষ্ঠীতে একত্রিত করা প্রয়োজন এবং এখানে একটি গ্রাফ "একত্রিত করার" অনুরূপ একটি সমাধান ব্যবহার করা হয়। প্রতিটি সংগৃহীত লেবেল স্বীকৃত হতে হবে, এবং যেহেতু সুপারস্ক্রিপ্ট এবং সাবস্ক্রিপ্ট থাকতে পারে, কাজটি আরও আকর্ষণীয় হয়ে ওঠে।
প্রথমে, চিহ্নের "বেসলাইন" গণনা করা হয়:
এটি একটি সরল রেখা (মূলত বেসলাইন_y এর একটি নির্দিষ্ট মান), যার উপরে লেবেলের বড় হাতের অক্ষর রয়েছে এবং যার নীচে সূচকগুলি রয়েছে৷ পরিসংখ্যান আমাদের baseline_y নির্ধারণ করতে সাহায্য করবে:
  • একটি বড় হাতের অক্ষরের গড় আকার নির্ধারণ করা (বেশিরভাগ অক্ষরের বড় হাতের এবং ছোট হাতের অক্ষরের বিভিন্ন বানান রয়েছে);
  • প্রতিটি নির্দিষ্ট চিহ্ন বিশ্লেষণ করার সময়, গড় স্থানাঙ্ক মান নির্বাচন করুন yসমস্ত অক্ষরের জন্য যার আকার গড়ের মধ্যে।
কেন আমরা গড় গ্রহণ করি এবং সর্বাধিক না (লাইনটি লেবেল চিহ্নের নীচে যেতে হবে)? এটা এই ভাবে আরো স্থিতিশীল; যদি আমরা একটি প্রতীককে মূলধন হিসাবে ব্যাখ্যা করতে ভুল করি তবে আমরা ভুলভাবে সূচকটিকে মূলধন হিসাবে শ্রেণীবদ্ধ করতে পারি, এর নীচে একটি রেখা আঁকতে পারি এবং সেই অনুযায়ী "আমাদের আর সূচক থাকবে না।" গড় বাছাই করা, একদিকে, ভাল ক্ষেত্রে বেসলাইন_ই-এর মান উল্লেখযোগ্যভাবে পরিবর্তন করে না, এবং অন্যদিকে, ভুলভাবে মূলধন অক্ষর নির্বাচন করার ত্রুটির খরচ পড়ে।

তারপর একে একে আমরা চরিত্রগুলোকে চিনতে পারি। প্রতিটি অক্ষরের জন্য আমরা গণনা করি:

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

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

  • যদি একটি চিহ্ন বেসলাইনের নিচে k% থাকে, তাহলে এটিকে সাবস্ক্রিপ্ট হিসাবে বিবেচনা করার মেট্রিক f(k) বার কমে যায়;
  • যদি একটি চিহ্ন গড় উচ্চতার চেয়ে উচ্চতায় n% ছোট হয়, তাহলে a..z চিহ্ন হিসাবে এর ব্যাখ্যার জন্য মেট্রিক g(n) বার কমে যায়।
তদনুসারে, স্বীকৃতি প্রক্রিয়ায়, সমস্ত নিয়ম প্রয়োগ করার পরে, আমরা কেবলমাত্র সর্বনিম্ন মেট্রিক মান সহ ব্যাখ্যাটি নির্বাচন করি - এটি বিজয়ী প্রতীক, সবচেয়ে অনুরূপ। তবে আমরা এখনও অন্যান্য ব্যাখ্যাগুলি "ভুলে" যাব না।
লেবেল যাচাইকরণ
সম্পূর্ণরূপে লেবেলগুলির রেডিমেড ব্যাখ্যা পাওয়ার পর পরবর্তী ধাপ হল তাদের বৈধতা। প্রতিটি বিষয়ের ক্ষেত্রটির নিজস্ব রয়েছে: রাশিয়ান ভাষার জন্য এটি অভিধান ব্যবহার করে একটি চেক, বেশ কয়েকটি শনাক্তকারীর জন্য এটি চেকসাম হতে পারে এবং রসায়নে এটি গ্রহণযোগ্য উপাদানগুলির একটি সেট। এই বিশেষ অংশটি বাস্তবায়নের জন্য আমরা এখনও ধরে রেখেছি সম্পূর্ণ সেটপ্রতিটি বস্তুর জন্য বিকল্প।

আমাদের লেবেল দুটি অক্ষর গঠিত যাক: (c1, c2)
অধিকন্তু, c1 হল "Y" যার মেট্রিক মান 0.1 এবং "X" এর মেট্রিক মান 0.4;
c2 হল 0.3 মেট্রিক মান সহ "c" এবং 0.8 মেট্রিক মান সহ "e"
আমি শুধু লিখতে পারি যে আমাদের চিহ্ন Yc. কিন্তু চিহ্ন Ycবৈধ নয় একটি বৈধ লেবেল পেতে, আমরা সম্ভাব্য বিকল্পগুলি গণনা করতে পারি এবং একটি বৈধ নির্বাচন করতে পারি৷ বৈধদের মধ্যে একটি যার মেট্রিক্সের মোট মান সর্বনিম্ন।
এই ক্ষেত্রে, 4টি বিকল্পের মধ্যে শুধুমাত্র একটি বৈধ " Xe", 1.2 এর একটি চূড়ান্ত মেট্রিক প্রদান করে।

মনে হচ্ছে আমরা সমস্যাটি সমাধান করেছি, এখন লেবেল মান বৈধ। কিন্তু যদি এটি "Yc" হয় যে ছবির লেখক সঠিকতার বিপরীতে ব্যবহার করতে চেয়েছিলেন। এটি বোঝার জন্য, আমরা পুরানো (0.4) থেকে নতুন মেট্রিক মান (1.2) বিয়োগ করি এবং ফলাফলের পার্থক্য (0.8) ব্যাখ্যা করি। এটি একটি নির্দিষ্ট থ্রেশহোল্ডের সাথে তুলনা করা যেতে পারে এবং এটি অতিক্রম করলে সংশোধন নিষিদ্ধ করা যেতে পারে। কিন্তু কিভাবে এই থ্রেশহোল্ড চয়ন?

মেশিন লার্নিং

স্বীকৃতি প্রক্রিয়ায় ব্যবহৃত অসংখ্য ধ্রুবক এবং থ্রেশহোল্ড সীমাবদ্ধতা আপনি কীভাবে বেছে নেবেন? প্রাথমিক মান, অবশ্যই, সাধারণ জ্ঞানের উপর ভিত্তি করে নির্বাচন করা যেতে পারে, কিন্তু তারা কি সর্বোত্তম হবে?

এই জাতীয় সমস্যার সমাধান আংশিকভাবে মেশিনের উপর ন্যস্ত করা যেতে পারে - পরামিতিগুলিতে এলোমেলো পরিবর্তনগুলি সম্পাদন করতে এবং যেগুলি দেয় সেগুলি নির্বাচন করতে গড়ে সেরা ফলাফল. এলোমেলো পরিবর্তনগুলি পরিবর্তন ব্যবহার করে পদ্ধতিগত করা যেতে পারে

নথি শনাক্তকরণ, নথির বিষয়বস্তু বিশ্লেষণ এবং ডেটা নিষ্কাশন বর্তমানে নিম্নোক্ত টেক্সট রিকগনিশন সিস্টেম ব্যবহার করে করা হয়, যা খরচ, গুণমান এবং গতিতে ভিন্ন:

  • OCR (অপটিক্যাল ক্যারেক্টার রিকগনিশন) মুদ্রিত অক্ষরগুলির অপটিক্যাল স্বীকৃতির জন্য একটি প্রযুক্তি, যেমন মুদ্রিত অক্ষরগুলির একটি স্ক্যান করা চিত্রকে তাদের পাঠ্য উপস্থাপনায় রূপান্তর করা;
  • আইসিআর (ইন্টেলিজেন্ট ক্যারেক্টার রিকগনিশন) - হাতে লেখা স্বতন্ত্র মুদ্রিত অক্ষরগুলির স্বীকৃতি;
  • OMR (অপটিক্যাল মার্ক রিকগনিশন) - চিহ্নের স্বীকৃতি (সাধারণত বর্গক্ষেত্র বা বৃত্তগুলি আড়াআড়িভাবে বা টিক দিয়ে অতিক্রম করা হয়);
  • স্টাইলাইজড সংখ্যা - পোস্টাল খামের মতো একটি টেমপ্লেট অনুযায়ী হাতে লেখা হাতে লেখা সংখ্যার স্বীকৃতি।

বছরের পর বছর ধরে, স্বীকৃতি প্রযুক্তি কোম্পানিগুলি হস্তাক্ষর সহ হাতের লেখার অনেক প্রকার এবং শৈলী কার্যকরভাবে পড়ার জন্য OCR, ICR, OMR এবং প্রযুক্তির মধ্যে পার্থক্য করার জন্য সংক্ষিপ্ত শব্দ তৈরি করার চেষ্টা করেছে।

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

ইন্টেলিজেন্ট হ্যান্ড রাইটিং রিকগনিশন (ICR) প্রযুক্তিপ্রধানত ব্লক অক্ষরে হস্তলিখিত পাঠ্য সনাক্তকরণে ব্যবহৃত হয়। ICR হাতে লেখা একক অক্ষর চিনতে সক্ষম।

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

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

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

প্যারাস্ক্রিপ্ট আইসিআর প্রযুক্তি লিখিত শব্দের গঠনের উপর দৃষ্টি নিবদ্ধ করে। আংশিকভাবে পুনরায় সাজানো অক্ষর (yuo spa lkiley raed tihs wthiuot a pborlem) আছে এমন শব্দ পড়ার জন্য লোকেরা কীভাবে অর্থ অনুসন্ধান করে, প্যারাস্ক্রিপ্ট আইসিআর একটি প্রাসঙ্গিক পদ্ধতির ভিত্তিতে অনুরূপ স্বীকৃতি অর্জন করে। স্বীকৃতি প্রক্রিয়া চলাকালীন ফলাফল প্রক্রিয়াকরণের মাধ্যমে, প্যারাস্ক্রিপ্ট আইসিআর অত্যন্ত নির্ভুল প্রতিক্রিয়া তৈরি করে, যার ফলস্বরূপ প্রক্রিয়ার শেষে পরীক্ষিতদের তুলনায় উচ্চ স্বীকৃতির হার হয়।

OMR (অপটিক্যাল মার্ক রিকগনিশন) - চিহ্নের স্বীকৃতি। সাধারণত, চিহ্নগুলি ক্রসড লাইন বা টিকযুক্ত বর্গক্ষেত্র বা বৃত্ত (চেকবক্স)।

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

অপটিক্যাল ক্যারেক্টার রিকগনিশন প্রযুক্তি বলতে কী বোঝায়?

অপটিক্যাল ক্যারেক্টার রিকগনিশন (OCR) একটি প্রযুক্তি যা আপনাকে রূপান্তর করতে দেয় বিভিন্ন ধরনেরনথি, যেমন স্ক্যান করা নথি, পিডিএফ, বা ডিজিটাল ক্যামেরা ফটো, সম্পাদনাযোগ্য, অনুসন্ধানযোগ্য বিন্যাসে।

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

ডেটা অনুলিপি, নিষ্কাশন এবং সম্পাদনা করতে, আপনার অক্ষর সনাক্তকরণ সফ্টওয়্যার প্রয়োজন যা একটি চিত্রের অক্ষরগুলি সনাক্ত করতে পারে, সেগুলিকে শব্দগুলিতে রচনা করতে পারে এবং তারপরে শব্দগুলিকে বাক্যে একত্রিত করতে পারে, যা আপনাকে মূল বিষয়বস্তুর সাথে কাজ করার অনুমতি দেবে নথি

ফাইনরিডার ওসিআর প্রযুক্তির কোন নীতিগুলি অন্তর্নিহিত?

ABBYY FineReader OCR-এর মতো অত্যাধুনিক অক্ষর শনাক্তকরণ সিস্টেমগুলি প্রকৃতির দ্বারা সৃষ্ট মেকানিজম ব্যবহারের উপর জোর দেয়। এই প্রক্রিয়াগুলি তিনটি মৌলিক নীতির উপর ভিত্তি করে: সততা, উদ্দেশ্যপূর্ণতা এবং অভিযোজনযোগ্যতা (আইপিএ নীতি)।

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

OCR এর পিছনে কোন প্রযুক্তি রয়েছে?

ABBYY, বহু বছরের গবেষণার ফলাফলের উপর ভিত্তি করে, IPA নীতিগুলি বাস্তবায়িত করেছে৷ কম্পিউটার প্রোগ্রাম. ABBYY FineReader অপটিক্যাল ক্যারেক্টার রিকগনিশন সিস্টেম হল বিশ্বের একমাত্র OCR সিস্টেম যা নথি প্রক্রিয়াকরণের সমস্ত পর্যায়ে উপরে বর্ণিত নীতি অনুসারে কাজ করে। এই নীতিগুলি প্রোগ্রামটিকে যতটা সম্ভব নমনীয় এবং বুদ্ধিমান করে তোলে, এটির কাজকে একজন ব্যক্তি কীভাবে প্রতীকগুলিকে চিনতে পারে তার খুব কাছাকাছি নিয়ে আসে। স্বীকৃতির প্রথম পর্যায়ে, সিস্টেমটি চিত্রগুলিকে বিশ্লেষণ করে যা পৃষ্ঠা অনুসারে নথির পৃষ্ঠা তৈরি করে, পৃষ্ঠাগুলির গঠন নির্ধারণ করে এবং পাঠ্য ব্লক এবং টেবিল নির্বাচন করে। উপরন্তু, আধুনিক নথিতে প্রায়শই সমস্ত ধরণের ডিজাইনের উপাদান থাকে: চিত্র, শিরোনাম, ফুটার, রঙিন ব্যাকগ্রাউন্ড বা পটভূমি ছবি. অতএব, সনাক্ত করা পাঠ্যটি কেবল খুঁজে পাওয়া এবং সনাক্ত করা যথেষ্ট নয়, প্রশ্নে থাকা নথিটি কীভাবে গঠন করা হয়েছে তা নির্ধারণ করা গুরুত্বপূর্ণ: এতে কি বিভাগ এবং উপবিভাগ, লিঙ্ক এবং পাদটীকা, টেবিল এবং গ্রাফ, একটি টেবিল রয়েছে? বিষয়বস্তু, পৃষ্ঠা নম্বর প্রবেশ করানো হয়, ইত্যাদি। তারপর টেক্সট লাইনে ব্লকগুলিতে হাইলাইট করা হয়, পৃথক লাইনগুলিকে শব্দে, শব্দগুলিকে অক্ষরে ভাগ করা হয়।

এটি লক্ষ করা গুরুত্বপূর্ণ যে চরিত্র নিষ্কাশন এবং স্বীকৃতি একটি একক পদ্ধতির উপাদান হিসাবে প্রয়োগ করা হয়। এটি আপনাকে IPA নীতিগুলির সম্পূর্ণ সুবিধা নিতে দেয়৷ নির্বাচিত অক্ষর চিত্রগুলি অক্ষর সনাক্তকরণ পদ্ধতিতে জমা দেওয়া হয় যাকে ক্লাসিফায়ার বলা হয়।

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

এর পরে, IPA নীতি অনুসারে, ABBYY FineReader প্রস্তাবিত অনুমানগুলি পরীক্ষা করে৷ এটি একটি ডিফারেনশিয়াল বৈশিষ্ট্য ক্লাসিফায়ার ব্যবহার করে করা হয়।

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

ডিজিটাল ছবির স্বীকৃতি

একটি ডিজিটাল ক্যামেরা দিয়ে ধারণ করা ছবিগুলি স্ক্যান করা নথি বা পিডিএফ থেকে আলাদা, যা ছবি।

তাদের প্রায়শই কিছু ত্রুটি থাকতে পারে, যেমন দৃষ্টিকোণ বিকৃতি, ফ্ল্যাশ ফ্লেয়ার বা বাঁকানো লাইন। বেশিরভাগ অ্যাপ্লিকেশনের সাথে কাজ করার সময়, এই ধরনের ত্রুটিগুলি উল্লেখযোগ্যভাবে স্বীকৃতি প্রক্রিয়াকে জটিল করে তুলতে পারে। এই বিষয়ে, ABBYY FineReader-এর সর্বশেষ সংস্করণগুলিতে চিত্র প্রাক-প্রক্রিয়াকরণ প্রযুক্তি রয়েছে যা স্বীকৃতির জন্য ছবি প্রস্তুত করার কাজগুলি সফলভাবে সম্পাদন করে৷

কিভাবে OCR প্রোগ্রাম ব্যবহার করবেন

ABBYY FineReader OCR প্রযুক্তি ব্যবহার করা সহজ - স্বীকৃতি প্রক্রিয়ায় সাধারণত তিনটি ধাপ থাকে: একটি নথি খোলা (বা স্ক্যান করা), সবচেয়ে উপযুক্ত বিন্যাসে (DOC, RTF, XLS, PDF, HTML, TXT, ইত্যাদি) সনাক্ত করা এবং সংরক্ষণ করা। অথবা সরাসরি অফিস প্রোগ্রাম যেমন Microsoft® Word®, Excel® বা PDF দেখার অ্যাপ্লিকেশনগুলিতে ডেটা স্থানান্তর করুন।

এছাড়া, সর্বশেষ সংস্করণ ABBYY FineReader আপনাকে ABBYY হট ফোল্ডার অ্যাপ্লিকেশন ব্যবহার করে নথি শনাক্তকরণ এবং রূপান্তর কাজগুলি স্বয়ংক্রিয় করতে দেয়৷ এটি ব্যবহার করে, আপনি অনুরূপ বা পুনরাবৃত্তিমূলক নথি প্রক্রিয়াকরণ কাজগুলি কনফিগার করতে পারেন এবং উত্পাদনশীলতা বাড়াতে পারেন।

OCR প্রোগ্রামগুলির সাথে কাজ করার ফলে আপনি কী সুবিধা পান?

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

একটি কাগজের নথি, ফটো বা PDF থেকে সম্পূর্ণ রূপান্তর প্রক্রিয়াটি এক মিনিটেরও কম সময় নেয় এবং স্বীকৃত নথিটি নিজেই দেখতে হুবহু আসলটির মতো!

নির্দেশনা