Tesseract، OpenCV اور Python PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ OCR کیسے کریں۔ عمودی تلاش۔ عی

Tesseract، OpenCV اور Python کے ساتھ OCR کیسے کریں۔

Tesseract، OpenCV اور Python کے ساتھ OCR کیسے کریں۔

اس بلاگ پوسٹ میں، ہم سب سے زیادہ استعمال ہونے والے Tesseract Engine کے پیچھے موجود ٹیکنالوجی کی وضاحت کرنے کی کوشش کریں گے، جسے آپٹیکل کریکٹر ریکگنیشن میں تحقیق کی گئی تازہ ترین معلومات کے ساتھ اپ گریڈ کیا گیا تھا۔ یہ مضمون ٹیسریکٹ انجن کا استعمال کرتے ہوئے ازگر میں OCR کو کیسے نافذ کیا جائے اس بارے میں رہنمائی/ٹیوٹوریل کے طور پر بھی کام کرے گا۔ ہم مندرجہ ذیل ماڈیولز کے ذریعے چلیں گے:

  • ٹیسریکٹ او سی آر کی خصوصیات
  • OpenCV کا استعمال کرتے ہوئے OCR کے لیے پری پروسیسنگ
  • CLI اور Python کے ساتھ Tesseract چل رہا ہے۔
  • ٹیسریکٹ انجن کی حدود

کی میز کے مندرجات

تعارف

OCR = آپٹیکل کریکٹر ریکگنیشن. دوسرے لفظوں میں، OCR سسٹم متن کی دو جہتی تصویر کو تبدیل کرتے ہیں، جس میں مشین سے پرنٹ شدہ یا ہاتھ سے لکھا ہوا متن اس کی تصویری نمائندگی سے مشین کے پڑھنے کے قابل متن میں ہو سکتا ہے۔ OCR ایک عمل کے طور پر عام طور پر ممکن حد تک درست طریقے سے انجام دینے کے لیے کئی ذیلی عملوں پر مشتمل ہوتا ہے۔ ذیلی عمل یہ ہیں:

  • امیج کی پری پروسیسنگ
  • ٹیکسٹ لوکلائزیشن
  • کریکٹر سیگمنٹیشن
  • کردار کی پہچان
  • پروسیسنگ پوسٹ

یقیناً اوپر دی گئی فہرست میں ذیلی عمل مختلف ہو سکتے ہیں، لیکن یہ تقریباً ایسے اقدامات ہیں جن کی خودکار کردار کی شناخت تک پہنچنے کی ضرورت ہے۔ OCR سافٹ ویئر میں، اس کا بنیادی مقصد تحریری متن کے حروف سے مختلف زبانوں کا استعمال کرتے ہوئے تمام منفرد الفاظ کی شناخت اور گرفت کرنا ہے۔

تقریباً دو دہائیوں سے، آپٹیکل کریکٹر ریکگنیشن سسٹمز کو کمپیوٹرائزڈ سسٹمز میں خودکار ٹیکسٹ انٹری فراہم کرنے کے لیے بڑے پیمانے پر استعمال کیا جاتا رہا ہے۔ پھر بھی اس سارے عرصے میں، روایتی OCR سسٹم (جیسے زونل او سی آر) نے مٹھی بھر قسم کے فونٹس اور پیج فارمیٹس سے زیادہ پڑھنے کی اپنی نااہلی پر کبھی قابو نہیں پایا۔ متناسب فاصلہ والی قسم (جس میں تقریباً تمام ٹائپ سیٹ کاپی شامل ہیں)، لیزر پرنٹر فونٹس، اور یہاں تک کہ بہت سے غیر متناسب ٹائپ رائٹر فونٹس، ان سسٹمز کی پہنچ سے باہر رہ گئے ہیں۔ اور اس کے نتیجے میں، روایتی OCR نے ڈیجیٹل شکل میں تبدیل کرنے کی ضرورت والے دستاویزات کی کل تعداد پر کبھی بھی معمولی اثر نہیں ڈالا۔

Tesseract، OpenCV اور Python کے ساتھ OCR کیسے کریں۔
آپٹیکل کریکٹر ریکگنیشن کا عمل (بشکریہ)

اگلی نسل کے OCR انجن گہری تعلیم کے شعبے میں تازہ ترین تحقیق کو بروئے کار لا کر مذکورہ بالا مسائل سے نمٹتے ہیں۔ عوامی طور پر دستیاب گہرے ماڈلز اور بڑے ڈیٹاسیٹس کے امتزاج سے فائدہ اٹھاتے ہوئے، ماڈلز دیے گئے کاموں پر جدید ترین درستگی حاصل کرتے ہیں۔ آج کل یہ بھی ممکن ہے۔ مصنوعی ڈیٹا تیار کریں۔ مختلف فونٹس کے ساتھ جنریٹو مخالف نیٹ ورکس کا استعمال کرتے ہوئے اور کچھ دیگر جنریٹو اپروچز۔

آپٹیکل کریکٹر ریکگنیشن باقی ہے۔ چیلنجنگ مسئلہ جب متن غیر محدود ماحول میں ہوتا ہے، جیسے قدرتی مناظرجیومیٹریکل بگاڑ، پیچیدہ پس منظر، اور متنوع فونٹس کی وجہ سے۔ گہری سیکھنے پر مبنی OCR جیسے استعمال کے مختلف کیسز کی وجہ سے ٹیکنالوجی میں اب بھی بے پناہ صلاحیت موجود ہے۔


ذہن میں OCR کا مسئلہ ہے؟ اپنی تنظیم کے ڈیٹا انٹری کے اخراجات کو کم کرنا چاہتے ہیں؟ کی طرف بڑھیں۔ نانونٹس اور اس کے لیے OCR ماڈل بنائیں تصاویر سے متن نکالیں or پی ڈی ایف سے ڈیٹا نکالیں۔ AI کی بنیاد پر پی ڈی ایف او سی آر!


اوپن سورس OCR ٹولز

ایک بہت کی طرف سے ہیں آپٹیکل کریکٹر ریکگنیشن سافٹ ویئر دستیاب ہے. مجھے ان کے درمیان کوئی معیار کا موازنہ نہیں ملا، لیکن میں ان میں سے کچھ کے بارے میں لکھوں گا جو سب سے زیادہ ڈویلپر کے موافق معلوم ہوتے ہیں۔

Tesseract - ایک اوپن سورس OCR انجن جس نے OCR ڈویلپرز میں مقبولیت حاصل کی ہے۔ اگرچہ بعض اوقات اسے نافذ کرنا اور اس میں ترمیم کرنا تکلیف دہ ہو سکتا ہے، لیکن مارکیٹ میں طویل عرصے تک بہت زیادہ مفت اور طاقتور OCR متبادل نہیں تھے۔ Tesseract ایک پی ایچ ڈی کے طور پر شروع ہوا. HP لیبز، برسٹل میں تحقیقی منصوبہ۔ اسے مقبولیت حاصل ہوئی اور اسے HP نے 1984 اور 1994 کے درمیان تیار کیا۔ 2005 میں HP نے ٹیسریکٹ کو اوپن سورس سافٹ ویئر کے طور پر جاری کیا۔ 2006 سے اسے گوگل نے تیار کیا ہے۔

Tesseract، OpenCV اور Python کے ساتھ OCR کیسے کریں۔
مختلف اوپن سورس OCR ٹولز کے لیے گوگل ٹرینڈز کا موازنہ

OCRopus - OCRopus ایک اوپن سورس OCR سسٹم ہے جو محققین اور کمپنیوں دونوں کو OCR اجزاء کی آسانی سے جانچ اور دوبارہ استعمال کی اجازت دیتا ہے۔ دستاویز کے تجزیہ کے پروگراموں کا مجموعہ، نہ کہ ٹرن-کی OCR سسٹم۔ اسے اپنے دستاویزات پر لاگو کرنے کے لیے، آپ کو کچھ امیج پری پروسیسنگ کرنے کی ضرورت پڑسکتی ہے، اور ممکنہ طور پر نئے ماڈلز کی تربیت بھی کرنی ہوگی۔ خود تسلیم شدہ اسکرپٹ کے علاوہ، زمینی سچائی کی تدوین اور تصحیح، غلطی کی شرح کی پیمائش، کنفیوژن میٹرکس کا تعین کرنے کے لیے کئی اسکرپٹس موجود ہیں جن کا استعمال اور ترمیم کرنا آسان ہے۔


اوکولر - آکولر ہینڈ پریس کا استعمال کرتے ہوئے چھپی ہوئی دستاویزات پر بہترین کام کرتا ہے، بشمول متعدد زبانوں میں لکھی گئی دستاویزات۔ یہ کمانڈ لائن کا استعمال کرتے ہوئے کام کرتا ہے۔ یہ ایک جدید ترین تاریخی OCR نظام ہے۔ اس کی بنیادی خصوصیات یہ ہیں:

  • نامعلوم فونٹس کی غیر زیر نگرانی سیکھنے کے لیے: صرف دستاویزی تصاویر اور متن کا ایک مجموعہ درکار ہے۔
  • شور مچانے والی دستاویزات کو سنبھالنے کی اہلیت: متضاد سیاہی، وقفہ کاری، عمودی سیدھ
  • کثیر لسانی دستاویزات کے لیے معاونت، بشمول وہ دستاویزات جن میں ورڈ لیول کوڈ سوئچنگ کافی ہے۔
  • آرتھوگرافک تغیر کے نمونوں کی غیر زیر نگرانی سیکھنا بشمول قدیم ہجے اور پرنٹر شارٹ ہینڈ۔
  • بیک وقت، سفارتی (لفظی) اور معمول کی شکلوں میں مشترکہ نقل۔


سوئفٹ او سی آر – میں سوئفٹ میں لکھے گئے OCR انجن کا بھی ذکر کروں گا کیونکہ ڈیپ لرننگ کے لیے استعمال ہونے والی ڈیویلپمنٹ پروگرامنگ لینگویج کے طور پر سوئفٹ کے استعمال کو آگے بڑھانے کے لیے بہت زیادہ ترقی کی جا رہی ہے۔ اس کو دیکھو کے بلاگ مزید جاننے کے لیے کیوں SwiftOCR ایک تیز اور آسان OCR لائبریری ہے جو تصویر کی شناخت کے لیے نیورل نیٹ ورک استعمال کرتی ہے۔ SwiftOCR کا دعویٰ ہے کہ ان کا انجن معروف Tessaract لائبریری سے بہتر کارکردگی کا مظاہرہ کرتا ہے۔

اس بلاگ پوسٹ میں، ہم ڈالیں گے Tesseract OCR پر توجہ دیں۔ اور مزید جانیں کہ یہ کیسے کام کرتا ہے اور اسے کیسے استعمال کیا جاتا ہے۔


Tesseract OCR

Tesseract ایک اوپن سورس ٹیکسٹ ریکگنیشن (OCR) انجن ہے، جو Apache 2.0 لائسنس کے تحت دستیاب ہے۔ اسے براہ راست استعمال کیا جا سکتا ہے، یا (پروگرامرز کے لیے) تصاویر سے پرنٹ شدہ متن نکالنے کے لیے API کا استعمال کرتے ہوئے۔ یہ زبانوں کی وسیع اقسام کی حمایت کرتا ہے۔ ٹیسریکٹ میں بلٹ ان GUI نہیں ہے، لیکن وہاں سے کئی دستیاب ہیں۔ تیسری پارٹی کا صفحہ. ٹیسریکٹ کئی پروگرامنگ زبانوں اور ریپرز کے ذریعے فریم ورک کے ساتھ مطابقت رکھتا ہے جو مل سکتے ہیں۔ یہاں. کسی بڑی دستاویز کے اندر موجود متن کو پہچاننے کے لیے اسے موجودہ لے آؤٹ تجزیہ کے ساتھ استعمال کیا جا سکتا ہے، یا اسے کسی ایک ٹیکسٹ لائن کی تصویر سے متن کو پہچاننے کے لیے بیرونی ٹیکسٹ ڈیٹیکٹر کے ساتھ مل کر استعمال کیا جا سکتا ہے۔

Tesseract، OpenCV اور Python کے ساتھ OCR کیسے کریں۔
A سے Tesseract کے ساتھ API بنانے کے لیے OCR پروسیس فلو بلاگ پوسٹ

Tesseract 4.00 میں ایک نیا نیورل نیٹ ورک سب سسٹم شامل ہے جسے ٹیکسٹ لائن شناخت کنندہ کے طور پر ترتیب دیا گیا ہے۔ اس کی ابتداء میں ہے۔ OCRopus' Python پر مبنی LSTM نفاذ لیکن C++ میں Tesseract کے لیے دوبارہ ڈیزائن کیا گیا ہے۔ Tesseract میں نیورل نیٹ ورک سسٹم TensorFlow سے پہلے کی تاریخ رکھتا ہے لیکن اس کے ساتھ مطابقت رکھتا ہے، کیونکہ وہاں ایک نیٹ ورک کی تفصیل کی زبان ہے جسے Variable Graph Specification Language (VGSL) کہا جاتا ہے، جو TensorFlow کے لیے بھی دستیاب ہے۔

کسی ایک کردار پر مشتمل تصویر کو پہچاننے کے لیے، ہم عام طور پر Convolutional Neural Network (CNN) کا استعمال کرتے ہیں۔ صوابدیدی لمبائی کا متن حروف کی ایک ترتیب ہے، اور اس طرح کے مسائل کو RNNs کے ذریعے حل کیا جاتا ہے اور LSTM RNN کی ایک مقبول شکل ہے۔ کے بارے میں مزید جاننے کے لیے اس پوسٹ کو پڑھیں ایل ایس ٹی ایم.


ٹیکنالوجی - یہ کیسے کام کرتا ہے۔

LSTMs سیکھنے کے سلسلے میں بہت اچھے ہیں لیکن جب ریاستوں کی تعداد بہت زیادہ ہو تو بہت سست ہو جاتی ہے۔ تجرباتی نتائج ہیں جو تجویز کرتے ہیں کہ LSTM سے کئی کلاسوں کی مختصر ترتیب کے مقابلے ایک طویل ترتیب سیکھنے کے لیے کہنا بہتر ہے۔ ٹیسریکٹ Python میں OCRopus ماڈل سے تیار ہوا جو C++ میں LSMT کا کانٹا تھا، جسے CLSTM کہتے ہیں۔ CLSTM عددی حساب کے لیے Eigen لائبریری کا استعمال کرتے ہوئے C++ میں LSTM ریکرنٹ نیورل نیٹ ورک ماڈل کا نفاذ ہے۔

Tesseract، OpenCV اور Python کے ساتھ OCR کیسے کریں۔
سے Tesseract 3 OCR عمل کاغذ

Legacy Tesseract 3.x کا انحصار ملٹی اسٹیج پراسیس پر تھا جہاں ہم مراحل میں فرق کر سکتے ہیں:

  • الفاظ کی تلاش
  • لائن کی تلاش
  • کردار کی درجہ بندی

لفظ کی تلاش ٹیکسٹ لائنوں کو بلاب میں ترتیب دے کر کی گئی تھی، اور لائنوں اور خطوں کا تجزیہ فکسڈ پچ یا متناسب متن کے لیے کیا جاتا ہے۔ کریکٹر سپیسنگ کی قسم کے مطابق ٹیکسٹ لائنز کو الفاظ میں مختلف طریقے سے توڑا جاتا ہے۔ شناخت پھر دو پاس کے عمل کے طور پر آگے بڑھتی ہے۔ پہلے پاس میں ہر لفظ کو باری باری پہچاننے کی کوشش کی جاتی ہے۔ ہر ایک لفظ جو تسلی بخش ہے تربیتی ڈیٹا کے طور پر ایک انکولی درجہ بندی کرنے والے کو منتقل کیا جاتا ہے۔ اس کے بعد انکولی درجہ بندی کرنے والے کو صفحہ کے نیچے متن کو زیادہ درست طریقے سے پہچاننے کا موقع ملتا ہے۔

Tesseract ٹول کی جدید کاری کوڈ کی صفائی اور ایک نیا LSTM ماڈل شامل کرنے کی ایک کوشش تھی۔ ان پٹ امیج کو خانوں (مستطیل) لائن میں LSTM ماڈل میں فیڈ کرکے اور آؤٹ پٹ دینے کے ذریعے پروسیس کیا جاتا ہے۔ نیچے دی گئی تصویر میں ہم تصور کر سکتے ہیں کہ یہ کیسے کام کرتا ہے۔

Tesseract، OpenCV اور Python کے ساتھ OCR کیسے کریں۔
ٹیسریکٹ LSTM ماڈل کو کس طرح استعمال کرتا ہے۔ پریزنٹیشن

ایک نیا ٹریننگ ٹول شامل کرنے اور ماڈل کو بہت سارے ڈیٹا اور فونٹس کے ساتھ تربیت دینے کے بعد، Tesseract بہتر کارکردگی حاصل کرتا ہے۔ پھر بھی، ہاتھ سے لکھے ہوئے متن اور عجیب فونٹس پر کام کرنے کے لیے کافی اچھا نہیں ہے۔ تجربے کے لیے اوپر کی تہوں کو ٹھیک کرنا یا دوبارہ تربیت دینا ممکن ہے۔


ٹیسریکٹ انسٹال کرنا

ونڈوز پر ٹیسریکٹ انسٹال کرنا پہلے سے مرتب شدہ بائنریز کے ساتھ آسان ہے۔ یہاں. "پاتھ" ماحولیاتی متغیر میں ترمیم کرنا اور ٹیسریکٹ پاتھ شامل کرنا نہ بھولیں۔ لینکس یا میک انسٹالیشن کے لیے اس کے ساتھ انسٹال ہوتا ہے۔ چند احکامات.

انسٹالیشن کے بعد ٹرمینل یا cmd میں کمانڈ ٹائپ کرکے تصدیق کریں کہ سب کچھ کام کر رہا ہے:

$ tesseract --version

اور آپ کو آؤٹ پٹ اسی طرح نظر آئے گا:

tesseract 4.0.0
leptonica-1.76.0
libjpeg 9c : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.8
Found AVX2
Found AVX
Found SSE

آپ پائپ کا استعمال کرتے ہوئے اس کے بعد ٹیسریکٹ کے لیے ازگر کا ریپر انسٹال کر سکتے ہیں۔
$ pip install pytesseract

ٹیسریکٹ لائبریری ایک آسان کمانڈ لائن ٹول کے ساتھ بھیجی جاتی ہے جسے ٹیسریکٹ کہتے ہیں۔ ہم اس ٹول کو امیجز پر OCR کرنے کے لیے استعمال کر سکتے ہیں اور آؤٹ پٹ کو ٹیکسٹ فائل میں محفوظ کیا جاتا ہے۔ اگر ہم اپنے C++ یا Python کوڈ میں Tesseract کو ضم کرنا چاہتے ہیں، تو ہم Tesseract کا API استعمال کریں گے۔


CLI کے ساتھ Tesseract چل رہا ہے۔

کے ساتھ تصویر پر ٹیسریکٹ انجن کو کال کریں۔ image_path اور امیج کو ٹیکسٹ میں تبدیل کریں، کمانڈ پرامپٹ میں درج ذیل کو ٹائپ کرکے لائن بہ لائن لکھی گئی:

$ tesseract image_path stdout

فائل میں آؤٹ پٹ ٹیکسٹ لکھنے کے لیے:

$ tesseract image_path text_result.txt

زبان کے ماڈل کا نام بتانے کے لیے، اس کے بعد زبان کا شارٹ کٹ لکھیں۔ -l پرچم، بطور ڈیفالٹ یہ انگریزی زبان لیتا ہے:

$ tesseract image_path text_result.txt -l eng

پہلے سے طے شدہ طور پر، Tesseract متن کے ایک صفحے کی توقع کرتا ہے جب یہ کسی تصویر کو الگ کرتا ہے۔ اگر آپ صرف ایک چھوٹے سے خطے کو OCR کرنا چاہتے ہیں تو، کا استعمال کرتے ہوئے ایک مختلف سیگمنٹیشن موڈ آزمائیں۔ پی ایس ایم دلیل. 14 موڈ دستیاب ہیں جو مل سکتے ہیں۔ یہاں. پہلے سے طے شدہ طور پر، Tesseract صفحہ کی تقسیم کو مکمل طور پر خودکار کرتا ہے لیکن واقفیت اور اسکرپٹ کا پتہ لگانے کو انجام نہیں دیتا ہے۔ پیرامیٹر کی وضاحت کرنے کے لیے، درج ذیل کو ٹائپ کریں:

$ tesseract image_path text_result.txt -l eng --psm 6

ایک اور اہم دلیل بھی ہے، OCR انجن موڈ (oem)۔ Tesseract 4 میں دو OCR انجن ہیں — Legacy Tesseract انجن اور LSTM انجن۔ -oem آپشن کا استعمال کرتے ہوئے آپریشن کے چار طریقے منتخب کیے گئے ہیں۔
0 صرف میراثی انجن۔
صرف 1 نیورل نیٹ LSTM انجن۔
2 Legacy + LSTM انجن۔
3 ڈیفالٹ، جو دستیاب ہے اس کی بنیاد پر۔

Tesseract، OpenCV اور Python کے ساتھ OCR کیسے کریں۔
ٹیسریکٹ OCR انجن کا نتیجہ

Pytesseract اور OpenCV کے ساتھ OCR

Pytesseract Tesseract-OCR انجن کے لیے ایک ریپر ہے۔ یہ ٹیسریکٹ کرنے کے لیے اسٹینڈ اکیلے انووکیشن اسکرپٹ کے طور پر بھی کارآمد ہے، کیونکہ یہ تکیہ اور لیپٹونیکا امیجنگ لائبریریوں بشمول jpeg، png، gif، bmp، tiff اور دیگر کے ذریعے تعاون یافتہ تصویری اقسام کو پڑھ سکتا ہے۔ Python اپروچ کے بارے میں مزید معلومات پڑھیں یہاں. اس ٹیوٹوریل کا کوڈ اس میں پایا جا سکتا ہے۔ ذخیرہ.

import cv2 import pytesseract img = cv2.imread('image.jpg') # Adding custom options
custom_config = r'--oem 3 --psm 6'
pytesseract.image_to_string(img, config=custom_config)

Tesseract کے لیے پری پروسیسنگ

ان تمام طریقوں سے بچنے کے لیے جن سے آپ کے ٹیسریکٹ آؤٹ پٹ کی درستگی میں کمی آسکتی ہے، آپ کو یہ یقینی بنانا ہوگا کہ تصویر مناسب ہے۔ پہلے سے عملدرآمد.

اس میں ری اسکیلنگ، بائنرائزیشن، شور ہٹانا، ڈیسکونگ وغیرہ شامل ہیں۔

OCR کے لیے امیج کو پری پروسیس کرنے کے لیے، مندرجہ ذیل میں سے کوئی بھی python فنکشن استعمال کریں یا فالو کریں۔ اوپن سی وی دستاویزات.

import cv2
import numpy as np img = cv2.imread('image.jpg') # get grayscale image
def get_grayscale(image): return cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # noise removal
def remove_noise(image): return cv2.medianBlur(image,5) #thresholding
def thresholding(image): return cv2.threshold(image, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1] #dilation
def dilate(image): kernel = np.ones((5,5),np.uint8) return cv2.dilate(image, kernel, iterations = 1) #erosion
def erode(image): kernel = np.ones((5,5),np.uint8) return cv2.erode(image, kernel, iterations = 1) #opening - erosion followed by dilation
def opening(image): kernel = np.ones((5,5),np.uint8) return cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel) #canny edge detection
def canny(image): return cv2.Canny(image, 100, 200) #skew correction
def deskew(image): coords = np.column_stack(np.where(image > 0)) angle = cv2.minAreaRect(coords)[-1] if angle < -45: angle = -(90 + angle) else: angle = -angle (h, w) = image.shape[:2] center = (w // 2, h // 2) M = cv2.getRotationMatrix2D(center, angle, 1.0) rotated = cv2.warpAffine(image, M, (w, h), flags=cv2.INTER_CUBIC, borderMode=cv2.BORDER_REPLICATE) return rotated #template matching
def match_template(image, template): return cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED) 

آئیے چیزوں کو بہتر طور پر دیکھنے کے لیے ایک مثال کے ساتھ کام کریں۔ ہماری اصل تصویر اس طرح نظر آتی ہے -

Tesseract، OpenCV اور Python کے ساتھ OCR کیسے کریں۔
اوریبش تحریری نظام

درج ذیل کوڈ کے ساتھ پری پروسیسنگ کے بعد

image = cv2.imread('aurebesh.jpg') gray = get_grayscale(image)
thresh = thresholding(gray)
opening = opening(gray)
canny = canny(gray)

اور نتیجے میں آنے والی تصاویر کی منصوبہ بندی کرتے ہوئے، ہمیں درج ذیل نتائج ملتے ہیں۔

Tesseract، OpenCV اور Python کے ساتھ OCR کیسے کریں۔
پری پروسیسنگ کے بعد کی تصویر

اصل تصویر کا آؤٹ پٹ اس طرح نظر آتا ہے -

GALACTIC BASIC
(AUREBESH) RE HFVMEVEIiZwoyv Ze
ABC DE F GH I JK LM
N—0- PQ RST Uv WX
2 | Ff 8 G& Pf fF § 5 op 7
ee
5, jf FF Ty ee ee
=
334 477 OED

یہاں یہ ہے کہ مختلف پری پروسیسڈ امیجز کی آؤٹ پٹ کیسی دکھتی ہے -

کینی ایج امیج (اتنی اچھی نہیں)

CAE Cn Cae AS
(AUREBESE) EA Na
oe SS
(Ne CI (ENE
a, ee oe ea
2
a a A: rc
|, |
a
Sear eo/e ecm emclomt Cia cuoomct mi im

حد کی تصویر -

GALACTIC BASIC
(AVREBESH)
RS 7FVMeEVEi1iFf o£
A B C D EF GH IJ K LM
AOoder7Nnvroroava
N O P Q@R S$ TU VW XK Y¥ Z
7 ee For 8 Ro Pf F Boao om #
0 12 3 4 5 6 7 8 9 , . !
>» 1kr7 @ by FEN
2? S$ ( Por Foy of ee
ASGSANDIE
CH AE EO KH NG OO SH TH

افتتاحی تصویر -

GALACTIC BASIC
(AUREZEBELSH)
KEE VTMEUOU EB iw oN es
A BC D EF F @ H | J K LT Ww
AOGdrcrT7WTt HYOAVa4
WO P Q R BS T U VW WK y Z
i J
Oo 1 2 3 46 8 7 SC Ps,
VY ir- -rp,ptUuY?
a a a
AGoOAnNnoOID
CH AE BO KH ®@ OO SH TH


متن کے ارد گرد بکس حاصل کرنا

Pytesseract کا استعمال کرتے ہوئے، آپ درج ذیل کو استعمال کرتے ہوئے اپنے OCR نتائج کے لیے باؤنڈنگ باکس کی معلومات حاصل کر سکتے ہیں۔ کوڈ.

نیچے دی گئی اسکرپٹ آپ کو او سی آر کے دوران ٹیسریکٹ کے ذریعے پائے جانے والے ہر کردار کے لیے باؤنڈنگ باکس کی معلومات فراہم کرے گی۔

import cv2
import pytesseract img = cv2.imread('image.jpg') h, w, c = img.shape
boxes = pytesseract.image_to_boxes(img) for b in boxes.splitlines(): b = b.split(' ') img = cv2.rectangle(img, (int(b[1]), h - int(b[2])), (int(b[3]), h - int(b[4])), (0, 255, 0), 2) cv2.imshow('img', img)
cv2.waitKey(0)

اگر آپ حروف کے بجائے الفاظ کے ارد گرد بکس چاہتے ہیں تو فنکشن image_to_data کام آئے گا. آپ استعمال کر سکتے ہیں۔ image_to_data pytesseract کے ساتھ مخصوص آؤٹ پٹ قسم کے ساتھ فنکشن Output.

Tesseract، OpenCV اور Python کے ساتھ OCR کیسے کریں۔

ذہن میں OCR کا مسئلہ ہے؟ انوائسز، پی ڈی ایف یا نمبر پلیٹس کو ڈیجیٹائز کرنا چاہتے ہیں؟ کی طرف بڑھیں۔ نانونٹس اور مفت میں OCR ماڈل بنائیں!


ہم اپنے ٹیسریکٹ آؤٹ پٹس کو جانچنے کے لیے اوپر دی گئی نمونہ انوائس کی تصویر استعمال کریں گے۔

import cv2
import pytesseract
from pytesseract import Output img = cv2.imread('invoice-sample.jpg') d = pytesseract.image_to_data(img, output_type=Output.DICT)
print(d.keys())

اس سے آپ کو درج ذیل آؤٹ پٹ ملنا چاہیے-
dict_keys(['level', 'page_num', 'block_num', 'par_num', 'line_num', 'word_num', 'left', 'top', 'width', 'height', 'conf', 'text'])

اس لغت کا استعمال کرتے ہوئے، ہم ہر ایک لفظ کا پتہ لگا سکتے ہیں، ان کے باؤنڈنگ باکس کی معلومات، ان میں موجود متن اور ہر ایک کے لیے اعتماد کے اسکور حاصل کر سکتے ہیں۔

آپ نیچے دیے گئے کوڈ کو استعمال کر کے خانوں کو پلاٹ کر سکتے ہیں۔

n_boxes = len(d['text'])
for i in range(n_boxes): if int(d['conf'][i]) > 60: (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i]) img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2) cv2.imshow('img', img)
cv2.waitKey(0)

نمونہ انوائس کی تصویر کے لیے یہ کیسا نظر آئے گا۔

Tesseract، OpenCV اور Python کے ساتھ OCR کیسے کریں۔


متن کے سانچے کی مماثلت

یہ تلاش کرنے کی کوشش کی مثال لیں کہ تصویر میں تاریخ کہاں ہے۔ یہاں ہمارا ٹیمپلیٹ ایک ریگولر ایکسپریشن پیٹرن ہوگا جسے ہم اپنے OCR نتائج کے ساتھ مناسب باؤنڈنگ بکس تلاش کرنے کے لیے میچ کریں گے۔ ہم استعمال کریں گے۔ regex ماڈیول اور image_to_data اس کے لیے فنکشن.

import re
import cv2
import pytesseract
from pytesseract import Output img = cv2.imread('invoice-sample.jpg')
d = pytesseract.image_to_data(img, output_type=Output.DICT)
keys = list(d.keys()) date_pattern = '^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/(19|20)dd$' n_boxes = len(d['text'])
for i in range(n_boxes): if int(d['conf'][i]) > 60: if re.match(date_pattern, d['text'][i]): (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i]) img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2) cv2.imshow('img', img)
cv2.waitKey(0)

جیسا کہ توقع کی گئی ہے، ہمیں تصویر میں انوائس کی تاریخ کے ارد گرد ایک باکس ملتا ہے۔

Tesseract، OpenCV اور Python کے ساتھ OCR کیسے کریں۔

صفحہ کی تقسیم کے طریقے

متن کے صفحے کا تجزیہ کرنے کے کئی طریقے ہیں۔ اگر آپ صرف ایک چھوٹے سے علاقے یا مختلف سمتوں وغیرہ میں OCR چلانا چاہتے ہیں تو tesseract api صفحہ کے کئی حصوں کو تقسیم کرنے کے طریقے فراہم کرتا ہے۔

یہاں tesseract کے ذریعے تائید شدہ صفحہ کی تقسیم کے طریقوں کی فہرست ہے -

0 صرف واقفیت اور اسکرپٹ کا پتہ لگانے (OSD)۔
1 OSD کے ساتھ صفحہ کی خودکار تقسیم۔
2 خودکار صفحہ کی تقسیم، لیکن کوئی OSD، یا OCR نہیں۔
3 مکمل طور پر خودکار صفحہ کی تقسیم، لیکن کوئی OSD نہیں۔ (پہلے سے طے شدہ)
4 متغیر سائز کے متن کا ایک کالم فرض کریں۔
5 عمودی طور پر منسلک متن کا ایک واحد یکساں بلاک فرض کریں۔
6 متن کا ایک ہی یکساں بلاک فرض کریں۔
7 تصویر کو ایک ٹیکسٹ لائن کی طرح سمجھیں۔
8 تصویر کو ایک لفظ کی طرح سمجھیں۔
9 تصویر کو ایک دائرے میں ایک لفظ کی طرح سمجھیں۔
10 تصویر کو ایک کردار کی طرح سمجھیں۔
11 ویرل متن۔ کسی خاص ترتیب میں زیادہ سے زیادہ متن تلاش کریں۔
OSD کے ساتھ 12 اسپارس ٹیکسٹ۔
13 خام لکیر۔ ٹیسریکٹ کے لیے مخصوص ہیکس کو نظرانداز کرتے ہوئے امیج کو ایک ٹیکسٹ لائن کے طور پر سمجھیں۔

اپنے صفحہ کے سیگمنٹیشن موڈ کو تبدیل کرنے کے لیے، کو تبدیل کریں۔ --psm اوپر بیان کردہ موڈ کوڈز میں سے کسی کے لیے اپنی کسٹم کنفیگریشن سٹرنگ میں دلیل۔


واقفیت اور اسکرپٹ کا پتہ لگائیں۔

آپ اپنی تصویر میں متن کی واقفیت اور اسکرپٹ کا بھی پتہ لگاسکتے ہیں جس میں یہ لکھا گیا ہے۔ مندرجہ ذیل تصویر -
Tesseract، OpenCV اور Python کے ساتھ OCR کیسے کریں۔
درج ذیل کوڈ کو چلانے کے بعد -

osd = pytesseract.image_to_osd(img)
angle = re.search('(?<=Rotate: )d+', osd).group(0)
script = re.search('(?<=Script: )d+', osd).group(0)
print("angle: ", angle)
print("script: ", script)

مندرجہ ذیل آؤٹ پٹ پرنٹ کرے گا.

angle: 90
script: Latin

صرف ہندسوں کا پتہ لگائیں۔

مثال کے طور پر اس تصویر کو لے لیں-
Tesseract، OpenCV اور Python کے ساتھ OCR کیسے کریں۔
اس تصویر سے نکالا گیا متن اس طرح لگتا ہے۔

‘Customer name Hallium Energy services
Project NEHINS-HIB-HSA
lavoice no 43876324
Dated 17%h Nov2018
Pono 76496234

آپ ترتیب کو درج ذیل میں تبدیل کرکے صرف ہندسوں کو پہچان سکتے ہیں۔

custom_config = r'--oem 3 --psm 6 outputbase digits'
print(pytesseract.image_to_string(img, config=custom_config))

آؤٹ پٹ اس طرح نظر آئے گا۔

-- . 43876324
172018
0 76496234

وائٹ لسٹ کرنے والے حروف

کہتے ہیں کہ آپ دی گئی تصویر سے صرف کچھ حروف کا پتہ لگانا چاہتے ہیں اور باقی کو نظر انداز کرنا چاہتے ہیں۔ آپ درج ذیل کنفیگریشن کا استعمال کرکے اپنے حروف کی وائٹ لسٹ (یہاں، ہم نے صرف a سے z تک کے تمام چھوٹے حروف استعمال کیے ہیں) بتا سکتے ہیں۔

custom_config = r'-c tessedit_char_whitelist=abcdefghijklmnopqrstuvwxyz --psm 6'
print(pytesseract.image_to_string(img, config=custom_config))

آؤٹ پٹ -

customername
roject
tnvoleeno
ated alliumenergyservices
e
thovo

بلیک لسٹ کریکٹرز

اگر آپ کو یقین ہے کہ کچھ حروف یا تاثرات یقینی طور پر آپ کے متن میں نہیں آئیں گے (او سی آر بلیک لسٹ کردہ حروف کی جگہ غلط متن لوٹائے گا) تو آپ درج ذیل کنفیگریشن کا استعمال کرکے ان حروف کو بلیک لسٹ کرسکتے ہیں۔

custom_config = r'-c tessedit_char_blacklist=0123456789 --psm 6'
pytesseract.image_to_string(img, config=custom_config)

آؤٹ پٹ -

Customer name Hallium Energy services
Project NEHINS-HIB-HSA
lavoice no
Dated %h Nov%
Pono

متعدد زبانوں میں پتہ لگائیں۔

آپ اسے ٹرمینل میں ٹائپ کرکے دستیاب زبانوں کو چیک کر سکتے ہیں۔

$ tesseract --list-langs

کسی مخصوص زبان کے استعمال کے لیے ٹیسریکٹ ڈاؤن لوڈ کرنے کے لیے

$ sudo apt-get install tesseract-ocr-LANG

جہاں آپ کی ضرورت کی زبان کے لیے LANG تین حروف کا کوڈ ہے۔ آپ LANG کی قدریں تلاش کر سکتے ہیں۔ یہاں.

آپ کو ڈاؤن لوڈ .traindata اس زبان کے لیے فائل جس کی آپ کو ضرورت ہے۔ یہاں اور اس میں رکھو $TESSDATA_PREFIX ڈائریکٹری (یہ وہی ہونا چاہئے جہاں tessdata ڈائریکٹری انسٹال ہے) اور اسے استعمال کرنے کے لیے تیار ہونا چاہیے۔

نوٹ - صرف وہ زبانیں جن میں a ہے۔ .traineddata فائل فارمیٹ ٹیسریکٹ کے ذریعہ تعاون یافتہ ہے۔

اس زبان کی وضاحت کرنے کے لیے جس میں آپ کو اپنے OCR آؤٹ پٹ کی ضرورت ہے، استعمال کریں۔ -l LANG config میں argument جہاں LANG 3 حروف کا کوڈ ہے جس زبان کو آپ استعمال کرنا چاہتے ہیں۔

custom_config = r'-l eng --psm 6'
pytesseract.image_to_string(img, config=custom_config)

مثال کے طور پر اس تصویر کو لے لیں-
Tesseract، OpenCV اور Python کے ساتھ OCR کیسے کریں۔
آپ LANG پیرامیٹر کو تبدیل کر کے متعدد زبانوں کے ساتھ کام کر سکتے ہیں جیسے -

custom_config = r'-l grc+tha+eng --psm 6'
pytesseract.image_to_string(img, config=custom_config)

اور آپ کو درج ذیل آؤٹ پٹ ملے گا -

Here’s some Greek: Οδιο διστα ιμπεδιτ φιμ ει, αδ φελ αβχορρεανθ ελωκυενθιαμ, εξ εσε εξερσι γυ-
βεργρεν ηας. Ατ μει σολετ σριπτορεμ. ἴυς αλια λαβωρε θε. Σιθ κυωτ νυσκυαμ
τρασυνδια αν, ὠμνιυμ ελιγενδι τιν πρι. Παρτεμ φερθερεμ συσιπιαντὺυρ εξ ιυς,ναμ
%0790 แ ร เง ๑ ๕ 80 ๕ 6 ๑ อ 06 ส 0 เง น อ ๓ , πρω πρωπριαε σαεφολα ιδ. Ατ πρι δολορ νυ-
σκυαμ. 6 Thai Here’s some Thai: ν᾿ ค อ ร ั ป ซั น จ ุ ้ ย โป ร ด ิ ว เซ อ ร ์ ส ถา ป ั ต ย ์ จ ๊ า บ แจ ็ ก พ ็ อ ต ม ้ า ห ิ น อ ่ อ น ซา ก ุ ร ะ ค ั น ถ ธ ุ ร ะ ฟิ ด ส ต า ร ์ ท ง ี ้ บ อ ย
ค อ ต อ ื ่ ม แป ร ั ส ั ง โฆ ค ํ า ส า ป แฟ น ซี ศิ ล ป ว ั ฒ น ธร ร ม ไฟ ล ท ์ จ ิ ๊ ก โก ๋ ก ั บ ด ั ก เจ ล พ ล ็ อ ต ม า ม ่ า ซา ก ุ ร ะ ด ี ล เล อ
ร ์ ซี น ด ั ม พ ์ แฮ ป ป ี ้ เอ ๊ ้ า ะ อ ุ ร ั ง ค ธา ต ุ ซิ ม ฟิ น ิ ก ซ์ เท ร ล เล ่ อ ร ์ อ ว อ ร ์ ด แค น ย อ น ส ม า พ ั น ธ์ ค ร ั ว ซอ ง ฮั ม อ า
ข่ า เอ ็ ก ซ์ เพ ร ส

نوٹ - پہلے بیان کردہ زبان -l پیرامیٹر بنیادی زبان ہے۔

بدقسمتی سے ٹیسریکٹ کے پاس تصویر میں متن کی زبان کا خود بخود پتہ لگانے کی کوئی خصوصیت نہیں ہے۔ ایک متبادل حل ایک اور ازگر ماڈیول کے ذریعہ فراہم کیا جاتا ہے جسے کہا جاتا ہے۔ langdetect جسے پائپ کے ذریعے انسٹال کیا جا سکتا ہے۔

$ pip install langdetect

یہ ماڈیول دوبارہ، کسی تصویر کا استعمال کرتے ہوئے متن کی زبان کا پتہ نہیں لگاتا ہے لیکن اس سے زبان کا پتہ لگانے کے لیے اسٹرنگ ان پٹ کی ضرورت ہوتی ہے۔ ایسا کرنے کا بہترین طریقہ یہ ہے کہ پہلے tesseract کا استعمال کرتے ہوئے OCR ٹیکسٹ کو ان زبانوں میں حاصل کریں جن میں آپ محسوس کر سکتے ہیں کہ وہاں موجود ہیں۔ langdetect یہ معلوم کرنے کے لیے کہ کون سی زبانیں OCR ٹیکسٹ میں شامل ہیں اور پھر OCR کو دوبارہ مل جانے والی زبانوں کے ساتھ چلائیں۔

کہتے ہیں کہ ہمارے پاس ایک متن ہے جس کے بارے میں ہمارے خیال میں انگریزی اور پرتگیزی میں تھا۔

custom_config = r'-l eng+por --psm 6'
txt = pytesseract.image_to_string(img, config=custom_config) from langdetect import detect_langs
detect_langs(txt)

یہ متن میں زبانوں کی فہرست اور ان کے امکانات کو آؤٹ پٹ کرے گا۔

[en:0.714282468983554, es:0.2857145605644145]

زبان کے کوڈز جو استعمال کرتے ہیں۔ langdetect ISO 639-1 کوڈز پر عمل کریں۔ موازنہ کرنے کے لیے، براہ کرم چیک کریں۔ اس اور اس. ہمیں معلوم ہوا کہ متن میں استعمال ہونے والی زبان انگریزی اور ہسپانوی ہے۔

ہم کنفگ کو تبدیل کرکے دوبارہ متن حاصل کرتے ہیں۔

custom_config = r'-l eng+spa --psm 6'
txt = pytesseract.image_to_string(img, config=custom_config)

نوٹ - Tesseract بری طرح سے کارکردگی کا مظاہرہ کرتا ہے جب، ایک سے زیادہ زبانوں والی تصویر میں، کنفیگریشن میں بتائی گئی زبانیں غلط ہوں یا ان کا بالکل ذکر ہی نہ ہو۔ یہ langdetect ماڈیول کو بھی تھوڑا سا گمراہ کر سکتا ہے۔


tessdata_fast استعمال کرنا

اگر رفتار آپ کے لیے ایک اہم تشویش ہے، تو آپ اپنے tessdata زبان کے ماڈلز کو tessdata_fast ماڈلز سے بدل سکتے ہیں جو کہ tessdata ماڈلز کے 8-bit انٹیجر ورژن ہیں۔

tessdata_fast کے مطابق گاٹہوب -

اس ذخیرے میں تربیت یافتہ ماڈلز کے فاسٹ انٹیجر ورژن شامل ہیں۔ اوپن سورس OCR انجن ٹیسریکٹ کریں.

یہ ماڈل صرف Tesseract 4 کے LSTM OCR انجن کے ساتھ کام کرتے ہیں۔

  • یہ رفتار/درستگی کا سمجھوتہ ہیں کہ رفتار بمقابلہ درستگی میں بہترین "پیسے کی قیمت" کس چیز نے پیش کی۔
  • کچھ زبانوں کے لیے، یہ اب بھی بہترین ہے، لیکن زیادہ تر کے لیے نہیں۔
  • "پیسے کی بہترین قیمت" نیٹ ورک کنفیگریشن کو پھر مزید رفتار کے لیے مربوط کر دیا گیا۔
  • زیادہ تر صارفین ان تربیت یافتہ ڈیٹا فائلوں کو OCR کرنے کے لیے استعمال کرنا چاہیں گے اور یہ لینکس ڈسٹری بیوشنز کے حصے کے طور پر بھیجی جائیں گی۔ اوبنٹو 18.04۔
  • ٹھیک ٹیوننگ / اضافہ تربیت کرے گا NOT ان سے ممکن ہے fast ماڈلز، جیسا کہ وہ 8 بٹ انٹیجر ہیں۔
  • اس ریپوزٹری میں ماڈلز استعمال کرتے وقت، صرف نئے LSTM پر مبنی OCR انجن کو سپورٹ کیا جاتا ہے۔ میراث tesseract انجن ان فائلوں کے ساتھ تعاون یافتہ نہیں ہے، لہذا Tesseract کے oem موڈز '0' اور '2' ان کے ساتھ کام نہیں کریں گے۔

استمال کے لیے tessdata_fast کے بجائے ماڈل tessdataآپ کو بس ڈاؤن لوڈ کرنے کی ضرورت ہے۔ tessdata_fast زبان ڈیٹا فائل سے یہاں اور اسے اپنے اندر رکھیں $TESSDATA_PREFIX ڈائریکٹری.


دستاویزات، رسیدوں یا رسیدوں کو ڈیجیٹائز کرنے کی ضرورت ہے لیکن کوڈ کرنے میں بہت سست ہیں؟ کی طرف بڑھیں۔ نانونٹس اور مفت میں OCR ماڈل بنائیں!


کسٹم ڈیٹا پر ٹیسریکٹ کی تربیت

Tesseract 4.00 میں ایک نیا نیورل نیٹ ورک پر مبنی ریکگنیشن انجن شامل ہے جو دستاویز کی تصاویر پر نمایاں طور پر زیادہ درستگی فراہم کرتا ہے۔ عصبی نیٹ ورک کو نمایاں طور پر زیادہ تربیتی ڈیٹا کی ضرورت ہوتی ہے اور بیس Tesseract کے مقابلے میں بہت سست تربیت ہوتی ہے۔ لاطینی زبان پر مبنی زبانوں کے لیے، فراہم کردہ موجودہ ماڈل ڈیٹا کو تقریباً 400000 ٹیکسٹ لائنوں پر تربیت دی گئی ہے جو تقریباً 4500 فونٹس پر محیط ہیں۔

Tesseract 4.0 LSTM ٹریننگ ٹیوٹوریل کو کامیابی کے ساتھ چلانے کے لیے، آپ کے پاس Tesseract 4 اور Tesseract 4 ٹریننگ ٹولز کی ورکنگ انسٹالیشن کی ضرورت ہے اور آپ کے پاس کچھ ڈائریکٹریز میں ٹریننگ اسکرپٹس اور مطلوبہ تربیت یافتہ ڈیٹا فائلز بھی موجود ہیں۔ تشریف لائیں۔ گیتھب ریپو فائلوں اور ٹولز کے لیے۔

Tesseract 4.00 شروع سے تربیت کے لیے چند دن سے چند ہفتوں تک کا وقت لیتا ہے۔ یہاں تک کہ ان تمام نئے تربیتی اعداد و شمار کے ساتھ، اس لیے یہاں تربیت کے لیے چند اختیارات ہیں:

  • عمدہ دھن۔ - ایک موجودہ تربیت یافتہ زبان سے شروع کرتے ہوئے، اپنے مخصوص اضافی ڈیٹا پر تربیت دیں۔ مثال کے طور پر ہاتھ سے لکھے ہوئے ڈیٹاسیٹ اور کچھ اضافی فونٹس پر تربیت۔
  • اوپر کی پرت کو کاٹ دیں۔ - نیٹ ورک سے اور نئے ڈیٹا کا استعمال کرتے ہوئے ایک نئی ٹاپ لیئر کو دوبارہ تربیت دیں۔ اگر فائن ٹیوننگ کام نہیں کرتی ہے، تو غالباً یہ اگلا بہترین آپشن ہے۔ مشابہت یہ کیوں مفید ہے، مثال کے طور پر امیج نیٹ ڈیٹاسیٹ پر تربیت یافتہ ماڈلز کو لیں۔ مقصد ایک بلی یا کتے کی درجہ بندی کرنا ہے، ماڈل میں نچلی پرتیں کونوں، افقی اور عمودی لکیروں کے طور پر نچلی سطح کے تجرید میں اچھی ہیں، لیکن ماڈل میں اونچی پرتیں ان خصوصیات کو یکجا کر رہی ہیں اور بلی یا کتے کے کان، آنکھیں، ناک کا پتہ لگا رہی ہیں۔ اور اسی طرح. صرف اوپری تہوں کو دوبارہ تربیت دے کر آپ نچلی تہوں سے علم استعمال کر رہے ہیں اور اپنے نئے مختلف ڈیٹاسیٹ کے ساتھ ملا رہے ہیں۔
  • شروع سے دوبارہ تربیت دیں۔ - یہ ایک بہت سست رویہ ہے جب تک کہ آپ کے پاس اپنے مسئلے کے لیے ایک بہت ہی نمائندہ اور کافی بڑی ٹریننگ سیٹ نہ ہو۔ شروع سے تربیت کا بہترین ذریعہ اس کی پیروی کرنا ہے۔ گیتھب ریپو.

اپنے کسٹم ڈیٹا کی تربیت اور تخلیق کرنے کے طریقے کے بارے میں ایک گائیڈ .traineddata فائلیں مل سکتی ہیں۔ یہاں, یہاں اور یہاں.

ہم اس بلاگ پوسٹ میں Tesseract کا استعمال کرتے ہوئے تربیت کے کوڈ کا احاطہ نہیں کریں گے۔

Tesseract، OpenCV اور Python کے ساتھ OCR کیسے کریں۔

ٹیسریکٹ کی حدود

Tesseract بہترین کام کرتا ہے جب پس منظر سے پیش منظر کے متن کی صاف سیگمنٹیشن ہو۔ عملی طور پر، اس قسم کے سیٹ اپ کی ضمانت دینا انتہائی مشکل ہو سکتا ہے۔ آپ کو Tesseract سے اچھے معیار کا آؤٹ پٹ نہ ملنے کی متعدد وجوہات ہیں جیسے کہ اگر تصویر کے پس منظر میں شور ہے۔ تصویر کا معیار جتنا بہتر ہوگا (سائز، کنٹراسٹ، بجلی) شناخت کا نتیجہ اتنا ہی بہتر ہوگا۔ OCR نتائج کو بہتر بنانے کے لیے اسے تھوڑا سا پری پروسیسنگ کی ضرورت ہوتی ہے، تصاویر کو مناسب طریقے سے سکیل کرنے کی ضرورت ہوتی ہے، تصویر کا زیادہ سے زیادہ کنٹراسٹ ہونا ضروری ہے، اور متن کو افقی طور پر سیدھ میں رکھنا چاہیے۔ Tesseract OCR کافی طاقتور ہے لیکن اس میں درج ذیل حدود ہیں۔

فہرست میں ٹیسریکٹ کی حدود کا خلاصہ۔

  • OCR اتنا درست نہیں ہے جتنا ہمارے پاس دستیاب کچھ تجارتی حل ہیں۔
  • نمونے سے متاثر ہونے والی تصاویر کے ساتھ اچھا کام نہیں کرتا جس میں جزوی رکاوٹ، مسخ شدہ تناظر، اور پیچیدہ پس منظر شامل ہیں۔
  • یہ ہینڈ رائٹنگ کو پہچاننے کے قابل نہیں ہے۔
  • ہو سکتا ہے کہ یہ بکواس تلاش کرے اور اسے OCR آؤٹ پٹ کے طور پر رپورٹ کرے۔
  • اگر کسی دستاویز میں -l LANG دلائل میں دی گئی زبانوں سے باہر کی زبانیں شامل ہیں، تو نتائج خراب ہو سکتے ہیں۔
  • دستاویزات کی فطری پڑھنے کی ترتیب کا تجزیہ کرنا ہمیشہ اچھا نہیں ہوتا۔ مثال کے طور پر، یہ تسلیم کرنے میں ناکام ہو سکتا ہے کہ ایک دستاویز میں دو کالم ہیں، اور کالموں کے متن میں شامل ہونے کی کوشش کر سکتے ہیں۔
  • ناقص معیار کے اسکین خراب معیار کا OCR پیدا کر سکتے ہیں۔
  • یہ اس بارے میں معلومات کو ظاہر نہیں کرتا ہے کہ فونٹ فیملی ٹیکسٹ کا تعلق کس سے ہے۔


یقیناً OCR کاموں کو انجام دینے کا ایک بہتر، بہت آسان اور زیادہ بدیہی طریقہ ہے۔


Nanonets کے ساتھ OCR

Tesseract، OpenCV اور Python کے ساتھ OCR کیسے کریں۔

۔ Nanonets OCR API آپ کو آسانی سے OCR ماڈل بنانے کی اجازت دیتا ہے۔ آپ کو اپنی تصاویر کو پہلے سے پروسیس کرنے کے بارے میں فکر کرنے کی ضرورت نہیں ہے یا آپ کے OCR ماڈل کی درستگی کو بڑھانے کے لیے ٹیمپلیٹس کو ملانے یا اصول پر مبنی انجن بنانے کی فکر کرنے کی ضرورت نہیں ہے۔

آپ اپنا ڈیٹا اپ لوڈ کر سکتے ہیں، اس کی تشریح کر سکتے ہیں، ماڈل کو ٹریننگ کے لیے سیٹ کر سکتے ہیں اور براؤزر پر مبنی UI کے ذریعے کوڈ کی ایک لائن لکھے بغیر، GPUs کے بارے میں فکر کیے بغیر یا اپنے گہرے سیکھنے کے ماڈلز کے لیے صحیح آرکیٹیکچرز تلاش کیے بغیر پیشین گوئیاں حاصل کرنے کا انتظار کر سکتے ہیں۔ آپ ہر پیشین گوئی کے JSON جوابات بھی حاصل کر سکتے ہیں تاکہ اسے اپنے سسٹمز کے ساتھ ضم کر سکیں اور جدید ترین الگورتھم اور مضبوط انفراسٹرکچر پر تیار کردہ مشین لرننگ پاورڈ ایپس بنا سکیں۔

GUI کا استعمال کرتے ہوئے: https://app.nanonets.com/

آپ نیچے دیے گئے مراحل پر عمل کر کے Nanonets-OCR API بھی استعمال کر سکتے ہیں:

مرحلہ 1: ریپو کو کلون کریں، انحصار انسٹال کریں۔

git clone https://github.com/NanoNets/nanonets-ocr-sample-python.git
cd nanonets-ocr-sample-python
sudo pip install requests tqdm

مرحلہ 2: اپنی مفت API کلید حاصل کریں۔
سے اپنی مفت API کلید حاصل کریں۔ http://app.nanonets.com/#/keys

Tesseract، OpenCV اور Python کے ساتھ OCR کیسے کریں۔

مرحلہ 3: API کلید کو ماحولیاتی متغیر کے طور پر سیٹ کریں۔

export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE

مرحلہ 4: ایک نیا ماڈل بنائیں

python ./code/create-model.py

نوٹ: یہ ایک MODEL_ID تیار کرتا ہے جس کی آپ کو اگلے مرحلے کے لیے ضرورت ہے۔

مرحلہ 5: ماڈل آئی ڈی کو ماحولیاتی متغیر کے طور پر شامل کریں۔

export NANONETS_MODEL_ID=YOUR_MODEL_ID

نوٹ: آپ کو پچھلے مرحلے سے YOUR_MODEL_ID ملے گا۔

مرحلہ 6: ٹریننگ ڈیٹا اپ لوڈ کریں۔
تربیتی ڈیٹا میں پایا جاتا ہے۔ images (تصویری فائلیں) اور annotations (تصویری فائلوں کے لیے تشریحات)

python ./code/upload-training.py

مرحلہ 7: ٹرین ماڈل
امیجز اپ لوڈ ہونے کے بعد، ماڈل کی تربیت شروع کریں۔

python ./code/train-model.py

مرحلہ 8: ماڈل اسٹیٹ حاصل کریں۔
ماڈل کو تربیت دینے میں ~2 گھنٹے لگتے ہیں۔ ماڈل کی تربیت کے بعد آپ کو ایک ای میل موصول ہوگی۔ اس دوران آپ ماڈل کی حالت چیک کرتے ہیں۔

python ./code/model-state.py

مرحلہ 9: پیشن گوئی کریں
ایک بار جب ماڈل کو تربیت دی جاتی ہے۔ آپ ماڈل کا استعمال کرتے ہوئے پیشین گوئیاں کر سکتے ہیں۔

python ./code/prediction.py ./images/151.jpg


لوپ میں نانونٹس اور انسان

‌'اعتدال پسند' اسکرین تصحیح اور داخلے کے عمل میں مدد کرتی ہے اور دستی جائزہ لینے والے کے کام کا بوجھ تقریباً 90% کم کرتی ہے اور تنظیم کے لیے اخراجات کو %50 تک کم کرتی ہے۔

Tesseract، OpenCV اور Python کے ساتھ OCR کیسے کریں۔

خصوصیات میں شامل ہیں

  1. پیشین گوئیوں کو ٹریک کریں جو درست ہیں۔
  2. ٹریک کریں کہ کون سے غلط ہیں۔
  3. جو غلط ہیں ان کی اصلاح کریں۔
  4. جو غلط ہیں ان کو حذف کریں۔
  5. گمشدہ پیشین گوئیاں پُر کریں۔
  6. تاریخ کی حدود کے ساتھ تصاویر کو فلٹر کریں۔
  7. معتدل تصاویر کی تعداد ان کے مقابلے میں حاصل کریں جو ماڈریٹ نہیں ہیں۔

تمام فیلڈز کو استعمال کرنے میں آسان GUI میں ترتیب دیا گیا ہے جو صارف کو OCR ٹیکنالوجی سے فائدہ اٹھانے اور اسے بہتر بنانے میں مدد کرنے کی اجازت دیتا ہے، بغیر کوئی کوڈ ٹائپ کیے یا یہ سمجھے کہ ٹیکنالوجی کیسے کام کرتی ہے۔


ذہن میں OCR کا مسئلہ ہے؟ اپنی تنظیم کے ڈیٹا انٹری کے اخراجات کو کم کرنا چاہتے ہیں؟ کی طرف بڑھیں۔ نانونٹس اور اس کے لیے OCR ماڈل بنائیں تصاویر سے متن نکالیں or پی ڈی ایف سے ڈیٹا نکالیں۔!


نتیجہ

جس طرح گہری سیکھنے نے کمپیوٹر وژن کے تقریباً ہر پہلو کو متاثر کیا ہے، اسی طرح کردار کی شناخت اور لکھاوٹ کی پہچان کے لیے بھی یہی بات درست ہے۔ گہری سیکھنے پر مبنی ماڈلز روایتی سے کہیں زیادہ متن کی شناخت کی بے مثال درستگی حاصل کرنے میں کامیاب ہوئے ہیں۔ معلومات نکالنا اور مشین لرننگ امیج پروسیسنگ نقطہ نظر.

Tesseract اچھی کارکردگی کا مظاہرہ کرتا ہے جب دستاویز کی تصاویر مندرجہ ذیل ہدایات پر عمل کرتی ہیں:

  • پس منظر سے پیش منظر کے متن کی صاف سیگمنٹیشن
  • افقی طور پر منسلک اور مناسب طریقے سے پیمانہ
  • دھندلاپن اور شور کے بغیر اعلی معیار کی تصویر

Tesseract 4.0 کی تازہ ترین ریلیز گہری سیکھنے پر مبنی OCR کی حمایت کرتی ہے جو نمایاں طور پر زیادہ درست ہے۔ OCR انجن بذات خود ایک طویل مختصر مدتی میموری (LSTM) نیٹ ورک پر بنایا گیا ہے، جو ایک قسم کا ریکرنٹ نیورل نیٹ ورک (RNN) ہے۔

Tesseract صاف دستاویزات کو اسکین کرنے کے لیے بہترین ہے اور یہ بہت زیادہ درستگی اور فونٹ کی تغیر کے ساتھ آتا ہے کیونکہ اس کی تربیت جامع تھی۔ میں کہوں گا کہ Tesseract ایک جانے والا ٹول ہے اگر آپ کا کام صاف سفید پس منظر پر کتابوں، دستاویزات اور پرنٹ شدہ متن کو اسکین کرنا ہے۔


مزید پڑھنا

: اپ ڈیٹ کریں
بہت سارے لوگوں نے ہم سے پوچھا کہ وہ ٹیکسٹ کی شکل میں تاریخ کیسے حاصل کر سکتے ہیں یا جب اسے تاریخ یا کسی دوسرے مخصوص ڈیٹا کا پتہ چلتا ہے تو وہ فہرست میں شامل کر سکتے ہیں۔
اس کا جواب یہ ہے:
ڈیٹ باکس کے ارد گرد ایک باؤنڈنگ باکس کھینچنے کے کوڈ میں، آپ کو ایک لائن نظر آئے گی جو ریجیکس پیٹرن سے ملتی ہے d['text']. یہ صرف ایک باکس کھینچتا ہے اگر پیٹرن مماثل ہو۔ آپ آسانی سے اقدار کو نکال سکتے ہیں۔ d['text'] ایک بار جب پیٹرن مماثل ہو جائے اور انہیں فہرست میں شامل کریں۔

اپ ڈیٹ 2:
غیر انگریزی OCR کے بارے میں سوالات کو حل کرنے کے لیے، ہم نے مزید پڑھنے کی فہرستوں کو اپ ڈیٹ کیا ہے۔

ٹائم اسٹیمپ:

سے زیادہ اے آئی اور مشین لرننگ