মূল কনটেন্টে যান
Abdullah Al Rafi
মেনু

ট্রিয়ার, জার্মানি · CET

বিকাশে বাংলা জন্মনিবন্ধন সনদ OCR

বাংলাদেশি জন্মনিবন্ধন সনদের জন্য প্রথমবারের মতো তৈরি বহুভাষিক OCR, যা বিকাশের কাস্টমার অনবোর্ডিংয়ের জন্য NVIDIA Triton-এ চলে।

সারসংক্ষেপ

ভূমিকা
ML ইঞ্জিনিয়ার, পরে সিনিয়র ML ইঞ্জিনিয়ার (ডেটা সায়েন্স)
সময়কাল
এপ্রি ২০২৩ – অক্টো ২০২৫
প্রযুক্তি
Python · ONNX Runtime · NVIDIA Triton
লিংক
প্রকাশ্য নয় (অফিসের প্রজেক্ট)

3×

সাপ্তাহিক সফল অনবোর্ডিং, সর্বোচ্চ

নতুন ধরনের ডকুমেন্ট যোগ করার আগের তুলনায়

+8%

OCR পারফরম্যান্স

আগের প্রোডাকশন মডেলের তুলনায়

100k+

সাপ্তাহিক রিকোয়েস্ট

ONNX Runtime-সহ Triton-এ চালানো

অফিসের প্রজেক্ট। বিস্তারিত সাধারণীকরণ করা হয়েছে; কোনো মালিকানাধীন কোড, ডেটা বা স্ক্রিনশট নেই।

এই পেজে
  1. সারসংক্ষেপ
  2. সমস্যা
  3. সীমাবদ্ধতা
  4. পদ্ধতি ও আর্কিটেকচার
  5. ফলাফল
  6. এখন হলে যা অন্যভাবে করতাম

সমস্যা

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

সীমাবদ্ধতা

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

পদ্ধতি ও আর্কিটেকচার

  1. সনদের ছবি

    ইনপুট

    কাস্টমার অনবোর্ডিংয়ের সময় তোলা

  2. NVIDIA Triton · ONNX Runtime
    1. প্রি-প্রসেসিং

      ধাপ ১

      ঘূর্ণন ঠিক করা, ক্রপ ও কনট্রাস্ট

    2. টেক্সট ডিটেকশন

      ধাপ ২

      লেখার লাইন ও ফিল্ড খুঁজে বের করা

    3. রিকগনিশন

      ধাপ ৩

      পাশাপাশি থাকা বাংলা ও ইংরেজি লেখা

  3. ফিল্ড এক্সট্র্যাকশন ও যাচাই

    ধাপ ৪

    লেখাকে ফিল্ডে সাজানো ও ফরম্যাট যাচাই

  4. অনবোর্ডিং সার্ভিস

    আউটপুট

    কাস্টমার যাচাইয়ের জন্য কাঠামোবদ্ধ ফিল্ড

চিত্র 1 · সাধারণীকৃত OCR পাইপলাইন, নতুন করে আঁকা। ধাপগুলোর সীমারেখা উদাহরণমাত্র; প্রোডাকশনের বিস্তারিত গোপনীয়।
ডায়াগ্রামের বর্ণনা

অনবোর্ডিং থেকে আসা সনদের ছবি প্রি-প্রসেসিং, টেক্সট ডিটেকশন এবং বাংলা/ইংরেজি রিকগনিশনের মধ্য দিয়ে যায়। এই ধাপগুলো NVIDIA Triton-এ ONNX মডেল হিসেবে চলে। শনাক্ত করা লেখা নির্দিষ্ট ফিল্ডে সাজিয়ে যাচাই করা হয়, তারপর তা অনবোর্ডিং সার্ভিসে পৌঁছায়।

সিদ্ধান্ত

নিজস্ব বহুভাষিক পাইপলাইন বানানো

ডিটেকশন, রিকগনিশন ও ফিল্ড এক্সট্র্যাকশন সাজানো হয়েছে সনদটিকে ঘিরেই: দুই লিপি, নির্দিষ্ট ফিল্ড আর জানা কয়েকটি লেআউট।

অন্য যা ভাবা হয়েছিল

  • সাধারণ কাজের OCR ইঞ্জিনবাংলা ও ইংরেজির এই মিশ্রণ কোনো প্রচলিত সমাধানই নির্ভরযোগ্যভাবে পড়তে পারত না; এ কারণেই ফলাফলটি ছিল প্রথম।

সিদ্ধান্ত

মডেলগুলো ONNX-এ এক্সপোর্ট করে NVIDIA Triton-এ চালানো

Triton একটি স্ট্যান্ডার্ড ইনফারেন্স API-এর পেছনে ONNX Runtime মডেল চালায়, যেখানে ডায়নামিক ব্যাচিং ও মডেল ভার্সনিং আগে থেকেই আছে। এর ফলেই OCR সপ্তাহে ১ লাখের বেশি রিকোয়েস্টে স্কেল করতে পেরেছে।

অন্য যা ভাবা হয়েছিল

  • অ্যাপ্লিকেশন প্রসেসের ভেতরেই মডেল চালানোএতে মডেল চালানো ওয়েব লেয়ারের সঙ্গে জড়িয়ে যায়, আর ব্যাচিং, ভার্সনিং ও স্কেলিং নিজে লিখতে হয়।

সিদ্ধান্ত

নতুন ধরনের ডকুমেন্ট যোগ করে কভারেজ বাড়ানো

সিনিয়র ML ইঞ্জিনিয়ার হিসেবে আমি সিস্টেমে নতুন ধরনের ডকুমেন্ট যোগ করেছি। এতে OCR পারফরম্যান্স ৮% বেড়েছে, আর সাপ্তাহিক সফল অনবোর্ডিং সর্বোচ্চ ৩ গুণ হয়েছে।

অন্য যা ভাবা হয়েছিল

  • শুধু আগের লেআউটগুলোতে বিদ্যমান মডেলকে আরও উন্নত করাজানা লেআউট যত ভালোই পড়া হোক, অসমর্থিত লেআউটের সনদ ব্যর্থই হতো।

ফলাফল

3×

সাপ্তাহিক সফল কাস্টমার অনবোর্ডিং, সর্বোচ্চ

তুলনার ভিত্তি: নতুন ধরনের ডকুমেন্টের আগে সাপ্তাহিক সফল অনবোর্ডিং

+8%

নতুন ধরনের ডকুমেন্ট যোগের পর OCR পারফরম্যান্স

তুলনার ভিত্তি: আগের প্রোডাকশন মডেল

100k+

প্রোডাকশনে সাপ্তাহিক রিকোয়েস্ট

ONNX Runtime-সহ NVIDIA Triton-এ চালানো

প্রথম সংস্করণে জন্মনিবন্ধন সনদ দিয়ে পুরো অনবোর্ডিং সম্ভব হয়েছিল। ২০২৫ সালে নতুন ধরনের ডকুমেন্ট যোগ করায় আগের প্রোডাকশন মডেলের তুলনায় OCR পারফরম্যান্স ৮% বেড়েছে, আর সাপ্তাহিক সফল কাস্টমার অনবোর্ডিং সর্বোচ্চ ৩ গুণ হয়েছে।

এখন হলে যা অন্যভাবে করতাম

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