इस ब्लॉग पोस्ट में, हम सबसे अधिक इस्तेमाल किए जाने वाले टेसरैक्ट इंजन के पीछे की तकनीक को समझाने की कोशिश करेंगे, जिसे ऑप्टिकल चरित्र मान्यता में शोध किए गए नवीनतम ज्ञान के साथ उन्नत किया गया था। यह लेख टेसरैक्ट इंजन का उपयोग करके अजगर में ओसीआर को लागू करने के तरीके पर एक गाइड-टू / गाइड के रूप में भी काम करेगा। हम निम्नलिखित मॉड्यूल के माध्यम से चलेंगे:
- Tesseract OCR सुविधाएँ
- ओपनसीवी का उपयोग करके ओसीआर के लिए प्रीप्रोसेसिंग
- CLI और पायथन के साथ टेसरैक्ट चलाना
- टेसरैक्ट इंजन की सीमाएं
विषय - सूची
- परिचय
- ओपन सोर्स ओसीआर टूल्स
- टेसेरैक्ट ओसीआर
- Pytesseract और OpenCV के साथ OCR
- कस्टम डेटा पर प्रशिक्षण टेसेक्ट
- टेसरैक्ट की सीमाएँ
- नैनोसेट्स के साथ ओसीआर
- निष्कर्ष
परिचय
ओसीआर = ऑप्टिकल कैरेक्टर पहचान. दूसरे शब्दों में, OCR सिस्टम टेक्स्ट की एक द्वि-आयामी छवि को रूपांतरित करता है, जिसमें मशीन द्वारा मुद्रित या हस्तलिखित पाठ को इसके छवि प्रतिनिधित्व से मशीन-पठनीय पाठ में शामिल किया जा सकता है। एक प्रक्रिया के रूप में ओसीआर में आम तौर पर यथासंभव सटीक प्रदर्शन करने के लिए कई उप-प्रक्रियाएं होती हैं। उपप्रक्रियाएं हैं:
- छवि का अनुशीलन
- पाठ स्थानीयकरण
- चरित्र विभाजन
- चरित्र पहचान
- प्रोसेसिंग के बाद
उपर्युक्त सूची में उप-प्रक्रियाएं अलग-अलग हो सकती हैं, लेकिन ये स्वचालित वर्ण मान्यता को प्राप्त करने के लिए आवश्यक चरण हैं। OCR सॉफ़्टवेयर में, लिखित पाठ वर्णों से विभिन्न भाषाओं का उपयोग करके सभी अनूठे शब्दों को पहचानना और उन पर कब्जा करना मुख्य उद्देश्य है।
लगभग दो दशकों से, कम्प्यूटरीकृत प्रणालियों में स्वचालित पाठ प्रविष्टि प्रदान करने के लिए ऑप्टिकल कैरेक्टर रिकग्निशन सिस्टम का व्यापक रूप से उपयोग किया गया है। फिर भी इस समय में, पारंपरिक ओसीआर सिस्टम (जैसे जोनल ओसीआर) ने कभी भी मुट्ठी भर प्रकार के फोंट और पेज प्रारूपों से अधिक पढ़ने में असमर्थता को दूर नहीं किया है। आनुपातिक रूप से दूरी वाले प्रकार (जिसमें लगभग सभी टाइपसेट कॉपी शामिल हैं), लेजर प्रिंटर फोंट, और यहां तक कि कई गैर-आनुपातिक टाइपराइटर फोंट, इन प्रणालियों की पहुंच से बाहर हैं। और इसके परिणामस्वरूप, पारंपरिक ओसीआर ने डिजिटल रूप में रूपांतरण की आवश्यकता वाले दस्तावेजों की कुल संख्या पर मामूली प्रभाव से अधिक कभी हासिल नहीं किया है।
अगली पीढ़ी के ओसीआर इंजन गहरी सीखने के क्षेत्र में नवीनतम शोध का उपयोग करके ऊपर वर्णित इन समस्याओं से निपटते हैं। सार्वजनिक रूप से उपलब्ध गहरे मॉडल और विशाल डेटासेट के संयोजन का लाभ उठाकर, मॉडल दिए गए कार्यों पर अत्याधुनिक सटीकता प्राप्त करते हैं। आजकल यह भी संभव है सिंथेटिक डेटा जनरेट करें अलग-अलग फॉन्ट के साथ जेनरेटर के प्रतिकूल नेटवर्क और कुछ अन्य जेनेरिक अप्रोच का उपयोग करना।
ऑप्टिकल चरित्र मान्यता एक बनी हुई है चुनौतीपूर्ण समस्या जब पाठ अप्रभावित वातावरण में होता है, जैसे प्राकृतिक दृश्यज्यामितीय विकृतियों, जटिल पृष्ठभूमि, और विविध फोंट के कारण। OCR जैसे गहन शिक्षण के विभिन्न उपयोग-मामलों के कारण प्रौद्योगिकी अभी भी एक विशाल क्षमता रखती है
क्या आपके मन में OCR समस्या है? अपने संगठन की डेटा प्रविष्टि लागत कम करना चाहते हैं? वहां जाओ नैनोनेट्स और ओसीआर मॉडल बनाने के लिए छवियों से पाठ निकालें or पीडीएफ से डेटा निकालें एआई आधारित पीडीएफ ओसीआर!
ओपन सोर्स ओसीआर टूल्स
वहां अत्यधिक हैं ऑप्टिकल कैरेक्टर पहचान सॉफ्टवेयर उपलब्ध है। मुझे उनके बीच कोई गुणवत्ता की तुलना नहीं मिली, लेकिन मैं उनमें से कुछ के बारे में लिखूंगा जो सबसे अधिक डेवलपर के अनुकूल लगते हैं।
Tesseract - एक ओपन-सोर्स OCR इंजन जिसने OCR डेवलपर्स के बीच लोकप्रियता हासिल की है। भले ही कभी-कभी इसे लागू करने और संशोधित करने के लिए दर्दनाक हो सकता है, लेकिन बाजार पर सबसे लंबे समय तक बहुत अधिक स्वतंत्र और शक्तिशाली ओसीआर विकल्प नहीं थे। टेसरैक्ट एक पीएच.डी. एचपी लैब्स, ब्रिस्टल में अनुसंधान परियोजना। इसे लोकप्रियता मिली और इसे 1984 और 1994 के बीच HP द्वारा विकसित किया गया। 2005 में HP ने Tesseract को एक ओपन-सोर्स सॉफ्टवेयर के रूप में जारी किया। 2006 से इसे Google द्वारा विकसित किया गया है।
ओसीआरोपस - OCRopus एक ओपन-सोर्स OCR सिस्टम है जो शोधकर्ताओं और कंपनियों दोनों द्वारा OCR घटकों के आसान मूल्यांकन और पुन: उपयोग की अनुमति देता है। दस्तावेज़ विश्लेषण कार्यक्रमों का संग्रह, टर्नकी कुंजी OCR प्रणाली नहीं। इसे अपने दस्तावेज़ों पर लागू करने के लिए, आपको कुछ छवि प्रीप्रोसेसिंग करने की आवश्यकता हो सकती है, और संभवतः नए मॉडल को भी प्रशिक्षित करना होगा। खुद को मान्यता स्क्रिप्ट के अलावा, जमीनी सच्चाई संपादन और सुधार के लिए कई स्क्रिप्ट हैं, त्रुटि दर को मापना, भ्रम की परिपक्वता का निर्धारण करना जो उपयोग करना और संपादित करना आसान है।
आंख का - एक हाथ प्रेस का उपयोग करते हुए मुद्रित दस्तावेजों पर Ocular सबसे अच्छा काम करता है, जिसमें कई भाषाओं में लिखा गया है। यह कमांड लाइन का उपयोग करके संचालित होता है। यह एक अत्याधुनिक ऐतिहासिक OCR प्रणाली है। इसकी प्राथमिक विशेषताएं हैं:
- अज्ञात फोंट के अनसुना किए गए सीखने: केवल दस्तावेज़ छवियों और पाठ के एक कोष की आवश्यकता होती है।
- शोर दस्तावेजों को संभालने की क्षमता: असंगत जासूसी, रिक्ति, ऊर्ध्वाधर संरेखण
- बहुभाषी दस्तावेजों के लिए समर्थन, जिसमें काफी शब्द-स्तरीय कोड-स्विचिंग शामिल है।
- पुरातन विभिन्न प्रकार के पैटर्न और अनचाहा वर्तनी और प्रिंटर आशुलिपि सहित अप्रकाशित सीखने की पद्धति।
- एक साथ, राजनयिक (शाब्दिक) और सामान्यीकृत दोनों रूपों में संयुक्त प्रतिलेखन।
स्विफ्टओसीआर - मैं स्विफ्ट में लिखे गए OCR इंजन का भी उल्लेख करूंगा क्योंकि स्विफ्ट के उपयोग को आगे बढ़ाने में बहुत बड़ा विकास किया जा रहा है क्योंकि गहन शिक्षण के लिए उपयोग की जाने वाली विकास प्रोग्रामिंग भाषा। चेक आउट ब्लॉग और अधिक जानने के लिए क्यों। स्विफ्टओसीआर एक तेज़ और सरल ओसीआर लाइब्रेरी है जो छवि मान्यता के लिए तंत्रिका नेटवर्क का उपयोग करता है। स्विफ्टओसीआर का दावा है कि उनके इंजन ने टेसारैक्ट लाइब्रेरी को अच्छी तरह से जाना।
इस ब्लॉग पोस्ट में, हम डालेंगे Tesseract OCR पर ध्यान दें और यह कैसे काम करता है और इसका उपयोग कैसे किया जाता है, इसके बारे में और अधिक जानकारी प्राप्त करें।
टेसेरैक्ट ओसीआर
Tesseract एक ओपन सोर्स टेक्स्ट रिकग्निशन (OCR) इंजन है, जो Apache 2.0 लाइसेंस के तहत उपलब्ध है। छवियों से मुद्रित पाठ निकालने के लिए इसका उपयोग सीधे, या (प्रोग्रामर के लिए) एपीआई का उपयोग करके किया जा सकता है। यह विभिन्न प्रकार की भाषाओं का समर्थन करता है। Tesseract में एक अंतर्निहित GUI नहीं है, लेकिन कई उपलब्ध हैं 3Party पेज। Tesseract रैपर के माध्यम से कई प्रोग्रामिंग भाषाओं और चौखटे के साथ संगत है जो मिल सकता है यहाँ उत्पन्न करें। यह एक बड़े दस्तावेज़ के भीतर पाठ को पहचानने के लिए मौजूदा लेआउट विश्लेषण के साथ उपयोग किया जा सकता है, या इसका उपयोग किसी एकल पाठ लाइन की छवि से पाठ को पहचानने के लिए बाहरी पाठ डिटेक्टर के साथ संयोजन में किया जा सकता है।
Tesseract 4.00 में एक नया न्यूरल नेटवर्क सबसिस्टम शामिल है जिसे टेक्स्ट लाइन पहचानकर्ता के रूप में कॉन्फ़िगर किया गया है। इसमें इसकी उत्पत्ति है OCRopus 'पायथन-आधारित LSTM कार्यान्वयन लेकिन C ++ में Tesseract के लिए पुन: डिज़ाइन किया गया है। Tesseract में तंत्रिका नेटवर्क प्रणाली प्री-डेट्स TensorFlow है, लेकिन इसके साथ संगत है, क्योंकि एक नेटवर्क विवरण भाषा है जिसे Variable Graph Specification Language (VGSL) कहा जाता है, जो TensorFlow के लिए भी उपलब्ध है।
किसी एकल वर्ण वाली छवि को पहचानने के लिए, हम आम तौर पर एक संवादात्मक तंत्रिका नेटवर्क (CNN) का उपयोग करते हैं। मनमानी लंबाई का पाठ वर्णों का एक क्रम है, और RNN और LSTM RNN का एक लोकप्रिय रूप है। इस पोस्ट को और अधिक जानने के लिए पढ़ें एलएसटीएम.
प्रौद्योगिकी - यह कैसे काम करता है
LSTM अनुक्रम सीखने में महान हैं लेकिन राज्यों की संख्या बहुत बड़ी होने पर बहुत धीमा हो जाता है। ऐसे अनुभवजन्य परिणाम हैं जो यह सुझाव देते हैं कि LSTM से कई वर्गों के छोटे अनुक्रम की तुलना में एक लंबा अनुक्रम सीखना बेहतर है। पायथॉन में ओसीरोपस मॉडल से विकसित टेसेरैक्ट जो सी ++ में एक एलएसएमटी का कांटा था, जिसे सीएलएमएम कहा जाता है। CLSTM संख्यात्मक गणनाओं के लिए Eigen लाइब्रेरी का उपयोग करके C ++ में LSTM आवर्तक तंत्रिका नेटवर्क मॉडल का कार्यान्वयन है।
लिगेसी टेसेक्ट 3.x बहु-चरण प्रक्रिया पर निर्भर था जहां हम चरणों को अलग कर सकते हैं:
- शब्द खोजना
- लाइन खोजने
- चरित्र का वर्गीकरण
शब्द खोज पाठ लाइनों को ब्लब में व्यवस्थित करके किया गया था, और लाइनों और क्षेत्रों का विश्लेषण निश्चित पिच या आनुपातिक पाठ के लिए किया जाता है। कैरेक्टर स्पेसिंग के प्रकार के अनुसार टेक्स्ट लाइनों को अलग-अलग शब्दों में तोड़ दिया जाता है। मान्यता तब दो-पास की प्रक्रिया के रूप में आगे बढ़ती है। पहले पास में, प्रत्येक शब्द को बदले में पहचानने का प्रयास किया जाता है। प्रत्येक शब्द जो संतोषजनक है, उसे प्रशिक्षण डेटा के रूप में एक अनुकूली वर्गीकरणकर्ता को दिया जाता है। अनुकूली क्लासिफायरफायर को पृष्ठ के निचले हिस्से पर पाठ को अधिक सटीक रूप से पहचानने का मौका मिलता है।
Tesseract टूल का आधुनिकीकरण कोड की सफाई और एक नए 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
टेसरैक्ट लाइब्रेरी को एक आसान कमांड-लाइन टूल के साथ भेज दिया जाता है जिसे टेसरैक्ट कहा जाता है। हम छवियों पर ओसीआर प्रदर्शन करने के लिए इस उपकरण का उपयोग कर सकते हैं और आउटपुट एक पाठ फ़ाइल में संग्रहीत किया जाता है। यदि हम अपने 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 पाठ के एक पृष्ठ की अपेक्षा करता है जब वह किसी छवि को खंडित करता है। यदि आप केवल एक छोटे से क्षेत्र को ओसीआर करना चाहते हैं, तो इसका उपयोग करके एक अलग विभाजन मोड का प्रयास करें -psm बहस। 14 मोड उपलब्ध हैं जिन्हें पाया जा सकता है यहाँ उत्पन्न करें। डिफ़ॉल्ट रूप से, Tesseract पूरी तरह से पृष्ठ विभाजन को स्वचालित करता है, लेकिन अभिविन्यास और स्क्रिप्ट का पता लगाने में नहीं करता है। पैरामीटर निर्दिष्ट करने के लिए, निम्न टाइप करें:
$ tesseract image_path text_result.txt -l eng --psm 6
एक और महत्वपूर्ण तर्क, OCR इंजन मोड (OEM) भी है। Tesseract 4 में दो OCR इंजन हैं - लिगेसी Tesseract इंजन और LSTM इंजन। –Oem विकल्प का उपयोग करके ऑपरेशन के चार तरीके चुने गए हैं।
केवल लिगेसी इंजन।
1 तंत्रिका जाल LSTM केवल इंजन।
2 विरासत + LSTM इंजन।
3 डिफ़ॉल्ट, जो उपलब्ध है, उसके आधार पर।
Pytesseract और OpenCV के साथ OCR
Pytesseract Tesseract-OCR इंजन के लिए एक आवरण है। यह एक स्टैंड-अलोन इनवोकेशन स्क्रिप्ट के रूप में टेसेरैक्ट के लिए भी उपयोगी है, क्योंकि यह पिलो और लेप्टेनिका इमेजिंग लाइब्रेरी द्वारा समर्थित सभी छवि प्रकारों को पढ़ सकता है, जिसमें जेपीईजी, पीएनजी, जीआईएफ, बीएमपी, टिफ, और अन्य शामिल हैं। पायथन दृष्टिकोण के बारे में अधिक जानकारी पढ़ें यहाँ उत्पन्न करें। इस ट्यूटोरियल का कोड इसमें पाया जा सकता है कोष.
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)
टेसरैक्ट के लिए प्रीप्रोसेसिंग
उन सभी तरीकों से बचने के लिए जो आपके टेसरैक्ट आउटपुट सटीकता को गिरा सकते हैं, आपको यह सुनिश्चित करने की आवश्यकता है कि छवि उचित रूप से है पूर्व संसाधित.
इसमें rescaling, binarization, नॉइज़ रिमूवल, डेस्कव्यूइंग आदि शामिल हैं।
ओसीआर के लिए छवि को प्रीप्रोसेस करने के लिए, निम्नलिखित पायथन कार्यों में से किसी का उपयोग करें या इसका पालन करें OpenCV प्रलेखन.
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)
आइए चीजों को बेहतर तरीके से देखने के लिए एक उदाहरण के साथ काम करें। हमारी मूल छवि इस तरह दिखती है -
निम्नलिखित कोड के साथ प्रीप्रोसेसिंग के बाद
image = cv2.imread('aurebesh.jpg') gray = get_grayscale(image)
thresh = thresholding(gray)
opening = opening(gray)
canny = canny(gray)
और परिणामस्वरूप छवियों की साजिश रचने पर, हमें निम्नलिखित परिणाम मिलते हैं।
मूल छवि के लिए आउटपुट इस तरह दिखता है -
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 परिणामों के लिए बाउंडिंग बॉक्स जानकारी प्राप्त कर सकते हैं कोड.
नीचे दी गई स्क्रिप्ट आपको 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
.
मन में 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)
नमूना चालान की छवि के लिए यह कैसा दिखाई देगा।
पाठ टेम्पलेट मिलान
एक छवि में एक तारीख कहाँ है, यह जानने की कोशिश कर के उदाहरण लें। यहां हमारा टेम्प्लेट एक नियमित अभिव्यक्ति पैटर्न होगा जिसे हम अपने 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)
जैसी कि उम्मीद थी, हमें इमेज में इनवॉइस डेट के चारों ओर एक बॉक्स मिलेगा।
पृष्ठ विभाजन मोड
पाठ के एक पृष्ठ का विश्लेषण करने के कई तरीके हो सकते हैं। यदि आप OCR को केवल एक छोटे से क्षेत्र या विभिन्न झुकावों पर चलाना चाहते हैं, तो tesseract api कई पृष्ठ विभाजन मोड प्रदान करता है।
यहाँ tesseract द्वारा समर्थित पृष्ठ विभाजन मोड की सूची दी गई है -
केवल ओरिएंटेशन और स्क्रिप्ट डिटेक्शन (OSD)।
ओएसडी के साथ 1 स्वचालित पेज विभाजन।
2 स्वचालित पृष्ठ विभाजन, लेकिन कोई OSD या OCR नहीं।
3 पूरी तरह से स्वचालित पेज विभाजन, लेकिन कोई ओएसडी नहीं। (चूक)
4 चर आकार के पाठ का एक कॉलम मान लें।
5 लंबवत संरेखित पाठ का एक समान खंड मान लें।
6 पाठ का एक समान खंड मान लें।
7 इमेज को सिंगल टेक्स्ट लाइन के रूप में समझें।
8 छवि को एक शब्द के रूप में समझो।
9 छवि को एक सर्कल में एकल शब्द के रूप में समझो।
10 छवि को एकल चरित्र के रूप में मानें।
11 विरल पाठ। किसी विशेष क्रम में जितना संभव हो उतना पाठ ढूंढें।
ओएसडी के साथ 12 विरल पाठ।
13 कच्ची रेखा। एक पाठ लाइन के रूप में छवि का इलाज करें, टेसरैक्ट-विशिष्ट हैक्स को दरकिनार करें।
अपना पृष्ठ विभाजन मोड बदलने के लिए, बदलें --psm
उपर्युक्त मोड कोडों में से किसी में अपने कस्टम कॉन्फ़िगरेशन स्ट्रिंग में तर्क।
अभिविन्यास और स्क्रिप्ट का पता लगाएं
आप अपनी छवि में पाठ के अभिविन्यास का पता लगा सकते हैं और उस स्क्रिप्ट को भी लिख सकते हैं जिसमें यह लिखा गया है। निम्नलिखित छवि -
निम्नलिखित कोड के माध्यम से चलने के बाद -
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
केवल अंकों का पता लगाएं
इस छवि को उदाहरण के लिए लें -
इस छवि से निकाला गया पाठ इस तरह दिखता है।
‘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
श्वेत वर्ण का
कहते हैं कि आप केवल दी गई छवि से कुछ वर्णों का पता लगाना चाहते हैं और बाकी को अनदेखा करना चाहते हैं। आप वर्णों के अपने श्वेतसूची को निर्दिष्ट कर सकते हैं (यहां, हमने निम्न से वर्णक्रम में सभी लोअरकेस वर्णों का उपयोग केवल z से 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
पात्रों को ब्लैकलिस्ट करना
यदि आप सुनिश्चित हैं कि कुछ अक्षर या अभिव्यक्तियाँ निश्चित रूप से आपके पाठ में नहीं आएंगी (OCR ब्लैक लिस्ट किए गए वर्णों के स्थान पर गलत पाठ लौटाएगा), तो आप निम्न वर्ण का उपयोग करके उन वर्णों को ब्लैकलिस्ट कर सकते हैं।
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 मानों का पता लगा सकते हैं यहाँ उत्पन्न करें.
आप डाउनलोड कर सकते हैं .traindata
उस भाषा के लिए फ़ाइल करें जिसकी आपको आवश्यकता है यहाँ उत्पन्न करें और इसे अंदर रखें $TESSDATA_PREFIX
निर्देशिका (यह वही होनी चाहिए, जहां पर tessdata
निर्देशिका स्थापित है) और यह उपयोग करने के लिए तैयार होना चाहिए।
नोट - केवल वे भाषाएँ जिन्हें ए .traineddata
फ़ाइल प्रारूप tesseract द्वारा समर्थित हैं।
उस भाषा को निर्दिष्ट करने के लिए जिसमें आपको अपने OCR आउटपुट की आवश्यकता है, का उपयोग करें -l LANG
उस विन्यास में तर्क जहां लैंग 3 अक्षर कोड है जिस भाषा का आप उपयोग करना चाहते हैं।
custom_config = r'-l eng --psm 6'
pytesseract.image_to_string(img, config=custom_config)
इस छवि को उदाहरण के लिए लें -
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
पैरामीटर प्राथमिक भाषा है।
दुर्भाग्य से tesseract में स्वचालित रूप से एक छवि में पाठ की भाषा का पता लगाने की सुविधा नहीं होती है। एक वैकल्पिक समाधान नामक एक अन्य अजगर मॉड्यूल द्वारा प्रदान किया जाता है langdetect
जिसे पाइप के माध्यम से स्थापित किया जा सकता है।
$ pip install langdetect
यह मॉड्यूल फिर से एक छवि का उपयोग करके पाठ की भाषा का पता नहीं लगाता है, लेकिन भाषा का पता लगाने के लिए स्ट्रिंग इनपुट की आवश्यकता होती है। इसका सबसे अच्छा तरीका यह है कि आप पहले जिस पाठ में महसूस कर सकते हैं, उसमें ओसीआर पाठ प्राप्त करने के लिए टेसरैक्ट का उपयोग करके वहां मौजूद हैं, का उपयोग करते हुए langdetect
ओसीआर पाठ में कौन सी भाषाएं शामिल हैं, यह जानने के लिए और फिर मिली हुई भाषाओं के साथ फिर से ओसीआर चलाएं।
मान लीजिए हमारे पास एक पाठ है जो हमने सोचा था कि अंग्रेजी और चित्रण में है।
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
आईएसओ 639-1 कोड का पालन करें। तुलना करने के लिए, कृपया जाँच करें इसका और इसका । हम पाते हैं कि पाठ में प्रयुक्त भाषा अंग्रेजी और स्पेनिश के बजाय है।
हम फिर से कॉन्फ़िगर को बदलकर पाठ प्राप्त करते हैं
custom_config = r'-l eng+spa --psm 6'
txt = pytesseract.image_to_string(img, config=custom_config)
नोट - Tesseract खराब प्रदर्शन करता है, जब कई भाषाओं वाली छवि में, कॉन्फ़िगरेशन में निर्दिष्ट भाषाएं गलत होती हैं या उनका उल्लेख बिल्कुल नहीं किया जाता है। यह लैंगडिटेक्ट मॉड्यूल को भी काफी हद तक गुमराह कर सकता है।
Tessdata_fast का उपयोग करना
यदि गति आपके लिए एक प्रमुख चिंता का विषय है, तो आप अपने tessdata भाषा मॉडल को tessdata_fast मॉडल से बदल सकते हैं जो कि tessdata मॉडल के 8-बिट पूर्णांक संस्करण हैं।
Tessdata_fast के अनुसार GitHub -
इस रिपॉजिटरी में प्रशिक्षित मॉडल के फास्ट पूर्णांक संस्करण हैं Tesseract ओपन सोर्स OCR इंजन.
ये मॉडल केवल Tesseract 4 के LSTM OCR इंजन के साथ काम करते हैं।
- ये गति/सटीकता समझौता हैं जो गति बनाम सटीकता में सर्वोत्तम "पैसे के लिए मूल्य" की पेशकश करते हैं।
- कुछ भाषाओं के लिए, यह अभी भी सबसे अच्छा है, लेकिन अधिकांश के लिए नहीं।
- "पैसे के लिए सर्वोत्तम मूल्य" नेटवर्क कॉन्फ़िगरेशन को तब आगे की गति के लिए पूर्णांक बनाया गया था।
- अधिकांश उपयोगकर्ता OCR करने के लिए इन प्रशिक्षितडेटा फ़ाइलों का उपयोग करना चाहेंगे और इन्हें Linux वितरण के भाग के रूप में शिप किया जाएगा। उबुन्टु 18.04।
- ठीक ट्यूनिंग / वृद्धिशील प्रशिक्षण होगा नहीं इन से संभव हो
fast
मॉडल, क्योंकि वे 8-बिट पूर्णांक हैं। - इस रिपॉजिटरी में मॉडल का उपयोग करते समय, केवल नया LSTM- आधारित OCR इंजन समर्थित है। धरोहर
tesseract
इन फ़ाइलों के साथ इंजन समर्थित नहीं है, इसलिए Tesseract के OEM मोड '0' और '2' उनके साथ काम नहीं करेंगे।
उपयोग करने के लिए tessdata_fast
के बजाय मॉडल tessdata
, आपको बस इतना करना है कि आप अपने डाउनलोड करें tessdata_fast
से भाषा डेटा फ़ाइल यहाँ उत्पन्न करें और इसे अपने अंदर रखें $TESSDATA_PREFIX
निर्देशिका.
दस्तावेजों, रसीदों या चालान को डिजिटाइज़ करने की आवश्यकता है लेकिन कोड के लिए बहुत आलसी? वहां जाओ नैनोनेट्स और मुक्त करने के लिए ओसीआर मॉडल का निर्माण!
कस्टम डेटा पर प्रशिक्षण टेसेक्ट
टेसरैक्ट 4.00 में एक नया तंत्रिका नेटवर्क-आधारित मान्यता इंजन शामिल है जो दस्तावेज़ छवियों पर काफी उच्च सटीकता प्रदान करता है। तंत्रिका नेटवर्क को काफी अधिक प्रशिक्षण डेटा की आवश्यकता होती है और बेस टेसरैक्ट की तुलना में बहुत धीमी गति से प्रशिक्षित करते हैं। लैटिन-आधारित भाषाओं के लिए, प्रदान किए गए मौजूदा मॉडल डेटा को लगभग 400000 टेक्स्ट लाइनों पर प्रशिक्षित किया गया है, जिसमें लगभग 4500 फोंट हैं।
Tesseract 4.0 LSTM प्रशिक्षण ट्यूटोरियल को सफलतापूर्वक चलाने के लिए, आपको Tesseract 4 और Tesseract 4 प्रशिक्षण उपकरण की एक कार्यशील स्थापना की आवश्यकता है और कुछ निर्देशिकाओं में प्रशिक्षण स्क्रिप्ट और आवश्यक प्रशिक्षित डेटा फ़ाइलों की भी आवश्यकता है। पर जाएँ गिथब रेपो फ़ाइलों और उपकरणों के लिए।
खरोंच से प्रशिक्षण के लिए टेसरैक्ट 4.00 कुछ दिनों से कुछ सप्ताह तक का समय लेता है। यहां तक कि इन सभी नए प्रशिक्षण डेटा के साथ, इसलिए यहां प्रशिक्षण के लिए कुछ विकल्प हैं:
- फ़ाइन ट्यून - एक मौजूदा प्रशिक्षित भाषा के साथ शुरू, अपने विशिष्ट अतिरिक्त डेटा पर ट्रेन। उदाहरण के लिए हस्तलिखित डेटासेट और कुछ अतिरिक्त फोंट पर प्रशिक्षण।
- शीर्ष परत को काटें - नेटवर्क से और नए डेटा का उपयोग करके एक नई शीर्ष परत को फिर से प्रशिक्षित करें। यदि फ़ाइन-ट्यूनिंग काम नहीं करता है, तो यह संभवतः अगला सबसे अच्छा विकल्प है। समानता क्यों उपयोगी है, इमेजनेट डेटासेट पर प्रशिक्षित उदाहरण मॉडल के लिए लें। लक्ष्य एक बिल्ली या कुत्ते के क्लासिफायरियर का निर्माण करना है, मॉडल में निचली परतें कोनों, क्षैतिज और ऊर्ध्वाधर रेखाओं के रूप में निम्न-स्तरीय अमूर्तता में अच्छी हैं, लेकिन मॉडल में उच्च परतें उन विशेषताओं को जोड़ रही हैं और बिल्ली या कुत्ते के कान, आंख, नाक का पता लगा रही हैं। और इसी तरह। केवल शीर्ष परतों को फिर से प्रशिक्षित करके आप निचली परतों के ज्ञान का उपयोग कर रहे हैं और अपने नए भिन्न डेटासेट के साथ संयोजन कर रहे हैं।
- खरोंच से बचना - यह एक बहुत ही धीमा तरीका है जब तक कि आपके पास अपनी समस्या के लिए बहुत प्रतिनिधि और पर्याप्त रूप से बड़े प्रशिक्षण सेट न हों। खरोंच से प्रशिक्षण के लिए सबसे अच्छा संसाधन इसका अनुसरण कर रहा है गिथब रेपो.
अपने कस्टम डेटा पर प्रशिक्षण और बनाने के लिए कैसे पर एक गाइड .traineddata
फाइलें मिल सकती हैं यहाँ उत्पन्न करें, यहाँ उत्पन्न करें और यहाँ उत्पन्न करें.
हम इस ब्लॉग पोस्ट में Tesseract का उपयोग करके प्रशिक्षण के लिए कोड को कवर नहीं करेंगे।
टेसरैक्ट की सीमाएँ
Tesseract सबसे अच्छा काम करता है जब पृष्ठभूमि से अग्रभूमि पाठ का एक साफ विभाजन होता है। व्यवहार में, इस प्रकार के सेटअप की गारंटी देना बेहद चुनौतीपूर्ण हो सकता है। ऐसे कई कारण हैं जिनसे आपको Tesseract से अच्छी गुणवत्ता का आउटपुट नहीं मिल सकता है जैसे कि पृष्ठभूमि पर छवि का शोर है। बेहतर छवि गुणवत्ता (आकार, इसके विपरीत, बिजली) बेहतर पहचान परिणाम। यह OCR परिणामों को बेहतर बनाने के लिए थोड़े प्रीप्रोसेसिंग की आवश्यकता होती है, छवियों को उचित रूप से छोटा करने की आवश्यकता होती है, जितना संभव हो उतना छवि विपरीत होता है, और पाठ को क्षैतिज रूप से गठबंधन किया जाना चाहिए। Tesseract OCR काफी शक्तिशाली है लेकिन इसकी निम्न सीमाएँ हैं।
सूची में टेसरैक्ट की सीमाएँ।
- OCR हमारे लिए उपलब्ध कुछ वाणिज्यिक समाधानों के समान सटीक नहीं है।
- आंशिक रोड़ा, विकृत परिप्रेक्ष्य, और जटिल पृष्ठभूमि सहित कलाकृतियों से प्रभावित छवियों के साथ अच्छा नहीं करता है।
- यह लिखावट को पहचानने में सक्षम नहीं है।
- यह अस्पष्ट हो सकता है और इसे OCR आउटपुट के रूप में रिपोर्ट कर सकता है।
- यदि किसी दस्तावेज़ में -l लैंग तर्कों में दी गई भाषाओं के बाहर की भाषाएं हैं, तो परिणाम खराब हो सकते हैं।
- दस्तावेजों के प्राकृतिक पढ़ने के क्रम का विश्लेषण करना हमेशा अच्छा नहीं होता है। उदाहरण के लिए, यह पहचानने में विफल हो सकता है कि एक दस्तावेज़ में दो कॉलम हैं, और कॉलम भर में पाठ में शामिल होने का प्रयास कर सकते हैं।
- खराब गुणवत्ता वाले स्कैन खराब गुणवत्ता वाले ओसीआर का उत्पादन कर सकते हैं।
- यह इस बारे में जानकारी उजागर नहीं करता है कि फ़ॉन्ट परिवार पाठ किससे संबंधित है।
निश्चित रूप से OCR कार्यों को करने का एक बेहतर, अधिक सरल और अधिक सहज तरीका है।
नैनोसेट्स के साथ ओसीआर
RSI नैनोनेट्स ओसीआर एपीआई आपको आसानी से ओसीआर मॉडल बनाने की अनुमति देता है। आपको अपनी छवियों के पूर्व-प्रसंस्करण के बारे में चिंता करने या मिलान टेम्पलेट्स के बारे में चिंता करने या अपने ओसीआर मॉडल की सटीकता बढ़ाने के लिए नियम आधारित इंजन बनाने की आवश्यकता नहीं है।
आप अपना डेटा अपलोड कर सकते हैं, उसे एनोटेट कर सकते हैं, प्रशिक्षण के लिए मॉडल सेट कर सकते हैं और कोड की एक भी लाइन लिखे बिना ब्राउज़र आधारित यूआई के माध्यम से भविष्यवाणियां प्राप्त करने की प्रतीक्षा कर सकते हैं, जीपीयू के बारे में चिंता कर सकते हैं या अपने गहरे शिक्षण मॉडल के लिए सही आर्किटेक्चर ढूंढ सकते हैं। आप अपने स्वयं के सिस्टम के साथ इसे एकीकृत करने के लिए प्रत्येक भविष्यवाणी के JSON प्रतिक्रियाओं को प्राप्त कर सकते हैं और कला एल्गोरिदम और एक मजबूत बुनियादी ढांचे के राज्य पर निर्मित मशीन लर्निंग संचालित ऐप्स का निर्माण कर सकते हैं।
GUI का उपयोग करना: https://app.nanonets.com/
आप नीचे दिए गए चरणों का पालन करके नैनोनेट्स-ओसीआर एपीआई का भी उपयोग कर सकते हैं: Nan
चरण 1: रेपो को क्लोन करें, निर्भरताएं स्थापित करें
git clone https://github.com/NanoNets/nanonets-ocr-sample-python.git
cd nanonets-ocr-sample-python
sudo pip install requests tqdm
चरण 2: अपनी मुफ्त एपीआई कुंजी प्राप्त करें
से अपनी मुफ्त एपीआई कुंजी प्राप्त करें http://app.nanonets.com/#/keys
चरण 3: एक पर्यावरण चर के रूप में एपीआई कुंजी सेट करें
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
नोट: आपको पिछले चरण से आपका_मॉडल_आईडी मिलेगा
चरण 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% तक कम करती है।
विशेषताओं में शामिल
- भविष्यवाणियों को ट्रैक करें जो सही हैं
- ट्रैक करें कि कौन से गलत हैं
- गलत लोगों को सुधारें
- जो गलत हैं, उन्हें हटा दें
- लापता भविष्यवाणियों में भरें
- दिनांक श्रेणियों के साथ छवियों को फ़िल्टर करें
- मॉडरेट नहीं की गई लोगों के खिलाफ मॉडरेट की गई छवियों की गणना करें
सभी क्षेत्रों को GUI का उपयोग करने के लिए एक आसान संरचना में संरचित किया गया है जो उपयोगकर्ता को OCR प्रौद्योगिकी का लाभ उठाने और किसी भी कोड को टाइप किए बिना या इसे समझने के लिए बेहतर बनाने में सहायता करता है कि तकनीक कैसे काम करती है।
क्या आपके मन में OCR समस्या है? अपने संगठन की डेटा प्रविष्टि लागत कम करना चाहते हैं? वहां जाओ नैनोनेट्स और ओसीआर मॉडल बनाने के लिए छवियों से पाठ निकालें or पीडीएफ से डेटा निकालें!
निष्कर्ष
जिस तरह डीप लर्निंग ने कंप्यूटर विज़न के लगभग हर पहलू को प्रभावित किया है, उसी तरह चरित्र पहचान और लिखावट की पहचान के लिए भी यही सच है। डीप लर्निंग आधारित मॉडल पारंपरिक से कहीं अधिक अभूतपूर्व पाठ पहचान सटीकता प्राप्त करने में कामयाब रहे हैं जानकारी निकासी और मशीन लर्निंग इमेज प्रोसेसिंग दृष्टिकोण।
जब दस्तावेज़ चित्र अगले दिशानिर्देशों का पालन करते हैं, तो टेसरैक्ट अच्छा प्रदर्शन करता है:
- पृष्ठभूमि से अग्रभूमि पाठ का साफ विभाजन
- क्षैतिज रूप से गठबंधन किया और उचित रूप से बढ़ाया
- उच्च गुणवत्ता वाली छवि धुंधला और शोर के बिना
Tesseract 4.0 की नवीनतम रिलीज़ OCR आधारित गहन शिक्षण का समर्थन करती है जो कि अधिक सटीक है। OCR इंजन ही एक लॉन्ग शॉर्ट-टर्म मेमोरी (LSTM) नेटवर्क पर बनाया गया है, जो एक तरह का Recurrent Neural Network (RNN) है।
टेसरेक्ट स्वच्छ दस्तावेज़ों को स्कैन करने के लिए एकदम सही है और इसका प्रशिक्षण व्यापक होने के बाद भी उच्च सटीकता और फ़ॉन्ट परिवर्तनशीलता के साथ आता है। मैं कहूंगा कि टेसरैक्ट एक गो-टू टूल है, यदि आपका कार्य साफ सफेद पृष्ठभूमि पर पुस्तकों, दस्तावेजों और मुद्रित पाठ की स्कैनिंग है।
इसके अलावा पढ़ना
- LSTM Tesseract 4.0 के लिए सर्वश्रेष्ठ प्रशिक्षित मॉडल
- ओसीआर 4.2017 के लिए ड्रॉपबॉक्स दृष्टिकोण
- Tesseract OCR इंजन विरासत का अवलोकन
- टेसरैक्ट डेवलपर्स के लिए फोरम
- Tesseract उपयोगकर्ताओं के लिए फोरम
- का उपयोग करके प्रारंभिक मुद्रित पुस्तकों पर ओसीआर सटीकता की तुलना
ओपन सोर्स इंजन कैलामारी और ओसीरोपस - डीप लर्निंग का उपयोग करते हुए कुशल, लेक्सिकॉन-मुक्त ओसीआर
- सूचना निष्कर्षण प्रणाली में ओसीआर इंजन की उपयुक्तता - एक तुलनात्मक मूल्यांकन
- डीपटेक्स्ट बेंचमार्क
- ओसीआर परियोजना सूची
- Tesseract Github नवीनतम रिलीज़
- CVPR 2019 - टेक्स्ट डिटेक्शन के लिए कैरेक्टर रीजन अवेयरनेस (CRAFT)
- ओपनसीवी और पायथन के साथ क्रेडिट कार्ड ओसीआर
- छवि प्रीप्रोसेसिंग
- OpenCV में इमेज प्रीप्रोसेसिंग
- रास्पबेरी पाई पर Tesseract का उपयोग कर OCR
- गैर-अंग्रेजी भाषाओं के लिए टेसेरैक्ट ओसीआर
- Tesseract का उपयोग करके Linux कमांड लाइन से OCR कैसे करें
- Tesseract OCR इंजन का अवलोकन
अपडेट:
बहुत से लोगों ने हमसे पूछा कि वे टेक्स्ट के रूप में तारीख कैसे प्राप्त कर सकते हैं या जब यह तारीख या किसी अन्य विशिष्ट डेटा का पता लगाता है तो वे सूची में शामिल हो सकते हैं।
यहाँ उत्तर है:
दिनांक बॉक्स के चारों ओर एक बाउंडिंग बॉक्स बनाने के लिए कोड में, आप एक रेखा देखेंगे जो रेगेक्स पैटर्न से मेल खाती हैd['text']
. यदि पैटर्न मेल खाता है तो यह केवल एक बॉक्स खींचता है। आप बस से मान निकाल सकते हैंd['text']
एक बार पैटर्न मेल खाता है और उन्हें एक सूची में जोड़ देता है।
अद्यतन 2:
गैर-अंग्रेज़ी OCR से संबंधित प्रश्नों के समाधान के लिए, हमने आगे की पठन सूचियों को अद्यतन किया है।
- 100
- 2019
- 7
- 9
- About
- अनुसार
- सही
- हासिल
- अधिग्रहण
- के पार
- अतिरिक्त
- पता
- लाभ
- AI
- एड्स
- एल्गोरिदम
- सब
- की अनुमति दे
- के बीच में
- विश्लेषण
- अन्य
- एपीआई
- दृष्टिकोण
- क्षुधा
- क्षेत्र
- तर्क
- चारों ओर
- कला
- लेख
- स्वचालित
- उपलब्ध
- जागरूकता
- जा रहा है
- BEST
- बिट
- ब्लॉग
- पुस्तकें
- सीमा
- मुक्केबाज़ी
- ब्राउज़र
- निर्माण
- में निर्मित
- पा सकते हैं
- CD
- परिवर्तन
- चक्र
- का दावा है
- सफाई
- सीएनएन
- कोड
- संग्रह
- स्तंभ
- संयोजन
- वाणिज्यिक
- कंपनियों
- जटिल
- आत्मविश्वास
- विन्यास
- भ्रम
- शामिल हैं
- रूपांतरण
- सुधार
- लागत
- सका
- युगल
- तिथि
- सौदा
- पता चला
- खोज
- निर्धारित करने
- विकसित
- डेवलपर्स
- विकास
- डीआईडी
- अलग
- विभिन्न
- डिजिटल
- digitize
- अंक
- दस्तावेजों
- नीचे
- बूंद
- ड्रॉपबॉक्स
- शीघ्र
- Edge
- ईमेल
- endpoint
- ऊर्जा
- अंग्रेज़ी
- वातावरण
- सब कुछ
- उदाहरण
- अपेक्षित
- उम्मीद
- परिवार
- फास्ट
- Feature
- विशेषताएं
- फ़ील्ड
- प्रथम
- प्रवाह
- का पालन करें
- निम्नलिखित
- कांटा
- प्रपत्र
- प्रारूप
- रूपों
- पाया
- मुक्त
- समारोह
- मिल रहा
- जाना
- GitHub
- देते
- लक्ष्य
- अच्छा
- गूगल
- ग्रे
- ग्रेस्केल
- महान
- गाइड
- दिशा निर्देशों
- हैक्स
- होने
- सिर
- यहाँ उत्पन्न करें
- हाई
- रखती है
- कैसे
- How To
- HTTPS
- विशाल
- मनुष्य
- पहचान करना
- की छवि
- प्रभाव
- लागू करने के
- महत्वपूर्ण
- में सुधार
- अन्य में
- शामिल
- सहित
- बढ़ना
- पता
- करें-
- इंफ्रास्ट्रक्चर
- एकीकृत
- सहज ज्ञान युक्त
- IT
- में शामिल होने
- कुंजी
- Instagram पर
- ज्ञान
- जानने वाला
- लैब्स
- भाषा
- भाषाऐं
- बड़ा
- ताज़ा
- जानें
- सीख रहा हूँ
- पुस्तकालय
- लाइसेंस
- बिजली
- लाइन
- लिनक्स
- सूची
- सूचियाँ
- लंबा
- मैक
- मशीन
- यंत्र अधिगम
- प्रमुख
- निर्माण
- गाइड
- बाजार
- मैच
- याद
- मन
- आदर्श
- मॉडल
- अधिकांश
- नेटवर्क
- संजाल आधारित
- नेटवर्क
- शोर
- खुला
- खुला स्रोत
- उद्घाटन
- विकल्प
- ऑप्शंस
- आदेश
- आयोजन
- अन्य
- अन्यथा
- पैटर्न
- पीडीएफ
- स्टाफ़
- प्रदर्शन
- परिप्रेक्ष्य
- गरीब
- लोकप्रिय
- संभव
- शक्तिशाली
- भविष्यवाणी
- भविष्यवाणियों
- दबाना
- सुंदर
- प्राथमिक
- मुसीबत
- प्रक्रिया
- प्रक्रियाओं
- उत्पादन
- प्रोग्रामर्स
- प्रोग्रामिंग
- प्रोग्रामिंग की भाषाएँ
- प्रोग्राम्स
- परियोजना
- प्रदान करना
- प्रदान करता है
- गुणवत्ता
- दरें
- कच्चा
- RE
- पढ़ना
- कारण
- को कम करने
- नियमित
- बने रहे
- रिपोर्ट
- कोष
- की आवश्यकता होती है
- अपेक्षित
- अनुसंधान
- संसाधन
- बाकी
- परिणाम
- रन
- दौड़ना
- स्कैनिंग
- स्क्रीन
- विभाजन
- सेवाएँ
- सेट
- कम
- समान
- सरल
- आकार
- छोटा
- So
- सॉफ्टवेयर
- समाधान ढूंढे
- स्पेनिश
- विनिर्देश
- गति
- राज्य
- राज्य
- मजबूत
- सफलतापूर्वक
- समर्थित
- समर्थन करता है
- स्विफ्ट
- प्रणाली
- सिस्टम
- कार्य
- टेक्नोलॉजी
- अंतिम
- परीक्षण
- यहाँ
- पहर
- उपकरण
- ऊपर का
- परंपरागत
- प्रशिक्षण
- बदालना
- उपचार
- रुझान
- Ubuntu
- ui
- समझना
- अद्वितीय
- us
- उपयोग
- बक्सों का इस्तेमाल करें
- उपयोगकर्ताओं
- मूल्य
- दृष्टि
- W
- प्रतीक्षा
- घूमना
- क्या
- एचएमबी क्या है?
- श्वेत सूची
- विकिपीडिया
- खिड़कियां
- अंदर
- बिना
- शब्द
- काम
- काम कर रहे
- कार्य
- लिख रहे हैं
- X