1. परिचय
Document AI, दस्तावेज़ों को समझने में मदद करने वाला एक समाधान है. यह दस्तावेज़ों, ईमेल वगैरह जैसे अनस्ट्रक्चर्ड डेटा को लेता है. इसके बाद, यह डेटा को समझने, उसका विश्लेषण करने, और उसे इस्तेमाल करने में मदद करता है.
Document AI Workbench में अपट्रेनिंग की सुविधा का इस्तेमाल करके, दस्तावेज़ों को प्रोसेस करने की ज़्यादा सटीक सुविधा पाई जा सकती है. इसके लिए, आपको खास तरह के दस्तावेज़ों के लिए लेबल किए गए ज़्यादा उदाहरण देने होंगे. साथ ही, मॉडल का नया वर्शन बनाना होगा.
इस लैब में, आपको इनवॉइस पार्सर प्रोसेसर बनाना होगा. साथ ही, उसे अपट्रेनिंग के लिए कॉन्फ़िगर करना होगा, उदाहरण के तौर पर दिए गए दस्तावेज़ों को लेबल करना होगा, और प्रोसेसर को अपट्रेन करना होगा.
इस लैब में इस्तेमाल किया गया दस्तावेज़ डेटासेट, पाइपिंग से जुड़ी एक काल्पनिक कंपनी के लिए रैंडम तरीके से जनरेट किए गए इनवॉइस से बना है.
ज़रूरी शर्तें
यह कोडलैब, Document AI के अन्य कोडलैब में दिए गए कॉन्टेंट पर आधारित है.
हमारा सुझाव है कि आगे बढ़ने से पहले, इन कोडलैब को पूरा कर लें.
- Document AI (Python) की मदद से ऑप्टिकल कैरेक्टर रिकग्निशन (ओसीआर)
- Document AI की मदद से फ़ॉर्म पार्स करना (Python)
- Document AI (Python) के साथ खास प्रोसेसर
- Python की मदद से Document AI प्रोसेसर मैनेज करना
- Document AI: ह्यूमन इन द लूप
आपको क्या सीखने को मिलेगा
- इनवॉइस पार्स करने वाले प्रोसेसर के लिए, अपट्रेनिंग की सुविधा कॉन्फ़िगर करें.
- एनोटेशन टूल का इस्तेमाल करके, Document AI के ट्रेनिंग डेटा को लेबल करें.
- मॉडल के नए वर्शन को ट्रेन करें.
- नए मॉडल वर्शन की सटीकता का आकलन करें.
आपको इन चीज़ों की ज़रूरत होगी
2. सेट अप करना
इस कोडलैब में यह माना गया है कि आपने कोडलैब के बारे में बुनियादी जानकारी में दिए गए, Document AI सेटअप करने के चरण पूरे कर लिए हैं.
आगे बढ़ने से पहले, कृपया यह तरीका अपनाएं:
3. प्रोसेसर बनाना
इस लैब का इस्तेमाल करने के लिए, आपको सबसे पहले Invoice Parser प्रोसेसर बनाना होगा.
- कंसोल में, Document AI की खास जानकारी पेज पर जाएं.

- प्रोसेसर बनाएं पर क्लिक करें. इसके बाद, नीचे की ओर स्क्रोल करके खास पर जाएं. इसके अलावा, सर्च बार में "इनवॉइस पार्सर" टाइप करके भी इस पर पहुंचा जा सकता है. इसके बाद, इनवॉइस पार्सर चुनें.

- इसे
codelab-invoice-uptrainingनाम दें. इसके अलावा, कोई ऐसा नाम भी दिया जा सकता है जो आपको याद रहे. इसके बाद, सूची में से सबसे मिलता-जुलता क्षेत्र चुनें.

- प्रोसेसर बनाने के लिए, बनाएं पर क्लिक करें. इसके बाद, आपको प्रोसेसर की खास जानकारी देने वाला पेज दिखेगा.

4. डेटासेट बनाना
अपने प्रोसेसर को ट्रेन करने के लिए, हमें ट्रेनिंग और टेस्टिंग डेटा वाला एक डेटासेट बनाना होगा. इससे प्रोसेसर को उन इकाइयों की पहचान करने में मदद मिलेगी जिन्हें हमें निकालना है.
डेटासेट को सेव करने के लिए, आपको Cloud Storage में एक नया बकेट बनाना होगा. ध्यान दें: यह वह बकेट नहीं होनी चाहिए जिसमें आपके दस्तावेज़ फ़िलहाल सेव हैं.
- बकेट बनाने के लिए, Cloud Shell खोलें और ये कमांड चलाएं. इसके अलावा, Cloud Console में नया बकेट बनाएं. इस बकेट के नाम को सेव करें. आपको इसकी ज़रूरत बाद में पड़ेगी.
export PROJECT_ID=$(gcloud config get-value project)
gsutil mb -p $PROJECT_ID "gs://${PROJECT_ID}-uptraining-codelab"
- डेटासेट टैब पर जाएं और डेटासेट बनाएं पर क्लिक करें

- पहले चरण में बनाए गए बकेट का नाम, डेस्टिनेशन पाथ फ़ील्ड में चिपकाएं. (
gs://को शामिल न करें)

- डेटासेट बनने तक इंतज़ार करें. इसके बाद, आपको डेटासेट मैनेजमेंट पेज पर भेज दिया जाएगा.

5. टेस्ट के लिए कोई दस्तावेज़ इंपोर्ट करना
अब, अपने डेटासेट में इनवॉइस के सैंपल का PDF इंपोर्ट करते हैं.
- दस्तावेज़ इंपोर्ट करें पर क्लिक करें

- इस लैब में इस्तेमाल करने के लिए, हमारे पास एक सैंपल PDF है. नीचे दिए गए लिंक को कॉपी करें और उसे सोर्स पाथ बॉक्स में चिपकाएं. फ़िलहाल, "डेटा स्प्लिट" को "Unassigned" के तौर पर छोड़ दें. इंपोर्ट करें पर क्लिक करें.
cloud-samples-data/documentai/codelabs/uptraining/pdfs

- दस्तावेज़ इंपोर्ट होने का इंतज़ार करें. मेरे टेस्ट में, इसमें एक मिनट से भी कम समय लगा.

- इंपोर्ट पूरा होने के बाद, आपको दस्तावेज़, डेटासेट मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) में दिखेगा. लेबलिंग कंसोल में जाने के लिए, इस पर क्लिक करें.

6. टेस्ट के लिए दस्तावेज़ को लेबल करना
इसके बाद, हम उन इकाइयों के लिए टेक्स्ट एलिमेंट और लेबल की पहचान करेंगे जिन्हें हमें एक्सट्रैक्ट करना है. इन लेबल का इस्तेमाल, हमारे मॉडल को इस खास दस्तावेज़ के स्ट्रक्चर को पार्स करने और सही टाइप की पहचान करने के लिए ट्रेन करने के लिए किया जाएगा.
- अब आपको लेबलिंग कंसोल में होना चाहिए, जो कुछ इस तरह दिखेगा.

- "टेक्स्ट चुनें" टूल पर क्लिक करें. इसके बाद, "McWilliam Piping International Piping Company" टेक्स्ट को हाइलाइट करें और
supplier_nameलेबल असाइन करें. लेबल के नाम खोजने के लिए, टेक्स्ट फ़िल्टर का इस्तेमाल किया जा सकता है.

- "14368 Pipeline Ave Chino, CA 91710" टेक्स्ट को हाइलाइट करें और
supplier_addressलेबल असाइन करें.

- "10001" टेक्स्ट को हाइलाइट करें और
invoice_idलेबल असाइन करें.

- "2020-01-02" टेक्स्ट को हाइलाइट करें और
due_dateलेबल असाइन करें.

- "बाउंडिंग बॉक्स" टूल पर स्विच करें. "Knuckle Couplers" टेक्स्ट को हाइलाइट करें और
line_item/descriptionलेबल असाइन करें.

- "9" टेक्स्ट को हाइलाइट करें और
line_item/quantityलेबल असाइन करें.

- "74.43" टेक्स्ट को हाइलाइट करें और
line_item/unit_priceलेबल असाइन करें.

- "669.87" टेक्स्ट को हाइलाइट करें और
line_item/amountलेबल असाइन करें.

- अगले दो लाइन आइटम के लिए, पिछले चार चरणों को दोहराएं. यह पूरा होने पर ऐसा दिखेगा.

- सबटोटल के बगल में मौजूद "1,419.57" टेक्स्ट को हाइलाइट करें और
net_amountलेबल असाइन करें.

- टैक्स के बगल में मौजूद "113.57" टेक्स्ट को हाइलाइट करें और
total_tax_amountलेबल असाइन करें.

- "कुल" के बगल में मौजूद "1,533.14" टेक्स्ट को हाइलाइट करें और
total_amountलेबल असाइन करें.

- "$" वर्णों में से किसी एक को हाइलाइट करें और
currencyलेबल असाइन करें.

- लेबल किया गया दस्तावेज़ पूरा होने पर ऐसा दिखना चाहिए. ध्यान दें, दस्तावेज़ में मौजूद बाउंडिंग बॉक्स या बाईं ओर मौजूद मेन्यू में लेबल के नाम/वैल्यू पर क्लिक करके, इन लेबल में बदलाव किया जा सकता है. लेबल लगाने के बाद, सेव करें पर क्लिक करें.

- यहां लेबल और वैल्यू की पूरी सूची दी गई है
लेबल का नाम | टेक्स्ट |
| McWilliam Piping International Piping Company |
| 14368 Pipeline Ave Chino, CA 91710 |
| 10001 |
| 2020-01-02 |
| नकल्स कपलर |
| 9 |
| 74.43 |
| 669.87 |
| पीवीसी पाइप 12 इंच |
| 7 |
| 15.90 |
| 111.30 |
| कॉपर पाइप |
| 7 |
| 91.20 |
| 638.40 |
| 1,419.57 |
| 113.57 |
| 1,533.14 |
| $ |
7. दस्तावेज़ को ट्रेनिंग सेट में असाइन करना
अब आपको डेटासेट मैनेजमेंट कंसोल पर वापस ले जाया जाएगा. ध्यान दें कि लेबल किए गए और लेबल नहीं किए गए दस्तावेज़ों की संख्या के साथ-साथ, चालू लेबल की संख्या में भी बदलाव हुआ है.

- हमें इस दस्तावेज़ को "ट्रेनिंग" या "टेस्ट" सेट में से किसी एक को असाइन करना होगा. दस्तावेज़ पर क्लिक करें.

- सेट को असाइन करें पर क्लिक करें. इसके बाद, ट्रेनिंग पर क्लिक करें.

- ध्यान दें कि डेटा स्प्लिट के नंबर बदल गए हैं.

8. पहले से लेबल किया गया डेटा इंपोर्ट करना
Document AI की अपट्रेनिंग के लिए, ट्रेनिंग और टेस्ट सेट, दोनों में कम से कम 10 दस्तावेज़ होने चाहिए. साथ ही, हर सेट में हर लेबल के 10 इंस्टेंस होने चाहिए.
बेहतर परफ़ॉर्मेंस के लिए, हमारा सुझाव है कि हर सेट में कम से कम 50 दस्तावेज़ हों. साथ ही, हर लेबल के 50 इंस्टेंस हों. आम तौर पर, ट्रेनिंग के लिए ज़्यादा डेटा का इस्तेमाल करने से, मॉडल ज़्यादा सटीक नतीजे देता है.
100 दस्तावेज़ों को मैन्युअल तरीके से लेबल करने में काफ़ी समय लगेगा. इसलिए, हमारे पास पहले से लेबल किए गए कुछ दस्तावेज़ हैं. इन्हें इस लैब के लिए इंपोर्ट किया जा सकता है.
Document.json फ़ॉर्मैट में, पहले से लेबल की गई दस्तावेज़ फ़ाइलें इंपोर्ट की जा सकती हैं. ये नतीजे, प्रोसेसर को कॉल करके और ह्यूमन इन द लूप (एचआईटीएल) का इस्तेमाल करके, सटीक होने की पुष्टि करके पाए जा सकते हैं.
- दस्तावेज़ इंपोर्ट करें पर क्लिक करें.

- Cloud Storage के इस पाथ को कॉपी/चिपकाएं और इसे ट्रेनिंग सेट को असाइन करें.
cloud-samples-data/documentai/codelabs/uptraining/training
- एक और बकेट जोड़ें पर क्लिक करें. इसके बाद, नीचे दिए गए Cloud Storage पाथ को कॉपी/चिपकाएं और इसे Test सेट को असाइन करें.
cloud-samples-data/documentai/codelabs/uptraining/test

- इंपोर्ट करें पर क्लिक करें और दस्तावेज़ों के इंपोर्ट होने का इंतज़ार करें. इस बार, पिछली बार की तुलना में ज़्यादा समय लगेगा, क्योंकि प्रोसेस करने के लिए ज़्यादा दस्तावेज़ हैं. मेरे टेस्ट में, इसमें करीब छह मिनट लगे. इस पेज को बंद करके, बाद में इस पर वापस आया जा सकता है.

- अपलोड होने के बाद, आपको दस्तावेज़, डेटासेट मैनेजमेंट पेज पर दिखने लगेंगे.

9. लेबल में बदलाव करना
इस उदाहरण के लिए इस्तेमाल किए जा रहे सैंपल दस्तावेज़ों में, इनवॉइस पार्सर के साथ काम करने वाले सभी लेबल शामिल नहीं हैं. ट्रेनिंग से पहले, हमें उन लेबल को 'बंद है' के तौर पर मार्क करना होगा जिनका हम इस्तेमाल नहीं कर रहे हैं. अपट्रेनिंग से पहले कस्टम लेबल जोड़ने के लिए भी, इसी तरह का तरीका अपनाएं.
- सबसे नीचे बाएं कोने में मौजूद, लेबल मैनेज करें पर क्लिक करें.

- अब आपको लेबल मैनेजमेंट कंसोल में होना चाहिए.

- सिर्फ़ इन लेबल को चालू के तौर पर मार्क करने के लिए, चेकबॉक्स और बंद करें/चालू करें बटन का इस्तेमाल करें.
currencydue_dateinvoice_idline_item/amountline_item/descriptionline_item/quantityline_item/unit_pricenet_amountsupplier_addresssupplier_nametotal_amounttotal_tax_amount
- सेट अप पूरा होने के बाद, कंसोल ऐसा दिखेगा. बदलाव करने के बाद, सेव करें पर क्लिक करें.

- डेटासेट मैनेजमेंट कंसोल पर वापस जाने के लिए, 'वापस जाएं' ऐरो पर क्लिक करें. ध्यान दें कि जिन लेबल के लिए 0 इंस्टेंस हैं उन्हें 'बंद है' के तौर पर मार्क किया गया है.

10. ज़रूरी नहीं: इंपोर्ट किए गए नए दस्तावेज़ों को अपने-आप लेबल करने की सुविधा
अगर आपको किसी ऐसे प्रोसेसर के लिए बिना लेबल वाले दस्तावेज़ इंपोर्ट करने हैं जिसका प्रोसेसर वर्शन पहले से डिप्लॉय किया गया है, तो लेबलिंग में लगने वाला समय बचाने के लिए, अपने-आप लेबल लगने की सुविधा का इस्तेमाल किया जा सकता है.
- ट्रेन करें पेज पर, दस्तावेज़ इंपोर्ट करें पर क्लिक करें.
- के इस पाथ को कॉपी करके चिपकाएं. इस डायरेक्ट्री में, बिना लेबल वाले पांच इनवॉइस PDF हैं. डेटा स्प्लिट ड्रॉपडाउन सूची से, ट्रेनिंग चुनें.
cloud-samples-data/documentai/Custom/Invoices/PDF_Unlabeled - अपने-आप लेबल लगने की सुविधा सेक्शन में जाकर, अपने-आप लेबल लगने की सुविधा के साथ इंपोर्ट करें चेकबॉक्स को चुनें.
- दस्तावेज़ों को लेबल करने के लिए, प्रोसेसर का कोई मौजूदा वर्शन चुनें.
- उदाहरण के लिए:
pretrained-invoice-v1.3-2022-07-15
- इंपोर्ट करें पर क्लिक करें और दस्तावेज़ों के इंपोर्ट होने का इंतज़ार करें. इस पेज को बंद करके, बाद में इस पर वापस आया जा सकता है.
- प्रोसेस पूरी होने के बाद, दस्तावेज़ अपने-आप लेबल किए गए सेक्शन में, ट्रेन करें पेज पर दिखते हैं.
- लेबल किए गए दस्तावेज़ों के तौर पर मार्क किए बिना, ट्रेनिंग या टेस्टिंग के लिए अपने-आप लेबल किए गए दस्तावेज़ों का इस्तेमाल नहीं किया जा सकता. अपने-आप लेबल किए गए दस्तावेज़ देखने के लिए, अपने-आप लेबल किए गए सेक्शन पर जाएं.
- लेबलिंग कंसोल में जाने के लिए, पहला दस्तावेज़ चुनें.
- लेबल, बाउंडिंग बॉक्स, और वैल्यू की पुष्टि करें, ताकि यह पक्का किया जा सके कि वे सही हैं. छोड़ी गई किसी भी वैल्यू को लेबल करें.
- जब काम पूरा हो जाए, तब 'लेबल किया गया' के तौर पर मार्क करें को चुनें.
- अपने-आप लेबल किए गए हर दस्तावेज़ के लिए, लेबल की पुष्टि करने की प्रोसेस दोहराएं. इसके बाद, ट्रेनिंग के लिए डेटा का इस्तेमाल करने के लिए, ट्रेन करें पेज पर वापस जाएं.
11. मॉडल को अपट्रेन करना
अब हम अपने इनवॉइस पार्सर को ट्रेन करने के लिए तैयार हैं.
- नया वर्शन ट्रेन करें पर क्लिक करें

- अपने वर्शन को ऐसा नाम दें जो आपको याद रहे. जैसे,
codelab-uptraining-test-1. बेस वर्शन, मॉडल का वह वर्शन होता है जिससे यह नया वर्शन बनाया जाएगा. अगर नए प्रोसेसर का इस्तेमाल किया जा रहा है, तो सिर्फ़ Google Pretrained Next with Uptraining विकल्प उपलब्ध होना चाहिए

- (ज़रूरी नहीं) अपने डेटासेट में मौजूद लेबल के बारे में मेट्रिक देखने के लिए, लेबल के आंकड़े देखें को भी चुना जा सकता है.

- अपट्रेनिंग की प्रोसेस शुरू करने के लिए, ट्रेनिंग शुरू करें पर क्लिक करें. आपको डेटासेट मैनेजमेंट पेज पर रीडायरेक्ट कर दिया जाएगा. दाईं ओर ट्रेनिंग का स्टेटस देखा जा सकता है. ट्रेनिंग पूरी होने में कुछ घंटे लगेंगे. इस पेज को बंद करके, बाद में इस पर वापस आया जा सकता है.

- वर्शन के नाम पर क्लिक करने से, आपको वर्शन मैनेज करें पेज पर भेज दिया जाएगा. इस पेज पर, वर्शन आईडी और ट्रेनिंग जॉब की मौजूदा स्थिति दिखती है.

12. मॉडल के नए वर्शन को टेस्ट करना
ट्रेनिंग का काम पूरा होने के बाद (मेरे टेस्ट में इसे पूरा होने में करीब एक घंटा लगा), अब नए मॉडल वर्शन को आज़माया जा सकता है. साथ ही, इसका इस्तेमाल अनुमान लगाने के लिए किया जा सकता है.
- वर्शन मैनेज करें पेज पर जाएं. यहां आपको मौजूदा स्टेटस और F1 स्कोर दिखेगा.

- इस मॉडल वर्शन को इस्तेमाल करने से पहले, हमें इसे डिप्लॉय करना होगा. दाईं ओर मौजूद वर्टिकल बिंदुओं पर क्लिक करें और Deploy Version को चुनें.

- वर्शन के डिप्लॉय होने का इंतज़ार करते समय, पॉप-अप विंडो में डिप्लॉय करें को चुनें. इस प्रोसेस को पूरा होने में कुछ मिनट लगेंगे. इसे डिप्लॉय करने के बाद, इस वर्शन को डिफ़ॉल्ट वर्शन के तौर पर भी सेट किया जा सकता है.

- डेटा डिप्लॉय होने के बाद, जांच करें टैब पर जाएं. इसके बाद, वर्शन ड्रॉपडाउन पर क्लिक करें और नया वर्शन चुनें.

- इस पेज पर, आपको पूरे दस्तावेज़ के साथ-साथ अलग-अलग लेबल के लिए, F1 स्कोर, सटीक होने की दर, और रिकॉल करने की दर जैसी इवैलुएशन मेट्रिक दिखेंगी. इन मेट्रिक के बारे में ज़्यादा जानने के लिए, AutoML का दस्तावेज़ पढ़ें.
- यहां लिंक की गई PDF फ़ाइल डाउनलोड करें. यह एक सैंपल दस्तावेज़ है, जिसे ट्रेनिंग या टेस्ट सेट में शामिल नहीं किया गया था.
- जांच के लिए दस्तावेज़ अपलोड करें पर क्लिक करें और PDF फ़ाइल चुनें.

- निकाली गई इकाइयां कुछ इस तरह दिखनी चाहिए.

13. नतीजा
बधाई हो, आपने Document AI का इस्तेमाल करके, इनवॉइस पार्सर को अपट्रेन कर लिया है. अब इस प्रोसेसर का इस्तेमाल करके, इनवॉइस को उसी तरह से पार्स किया जा सकता है जिस तरह से किसी स्पेशलाइज़्ड प्रोसेसर का इस्तेमाल किया जाता है.
प्रोसेसिंग के रिस्पॉन्स को मैनेज करने का तरीका जानने के लिए, स्पेशलाइज़्ड प्रोसेसर कोडलैब देखें.
सफ़ाई
इस ट्यूटोरियल में इस्तेमाल किए गए संसाधनों के लिए, अपने Google Cloud खाते से शुल्क न लिए जाने के लिए:
- Cloud Console में, संसाधन मैनेज करें पेज पर जाएं.
- प्रोजेक्ट की सूची में, अपना प्रोजेक्ट चुनें. इसके बाद, मिटाएं पर क्लिक करें.
- डायलॉग बॉक्स में, प्रोजेक्ट आईडी टाइप करें. इसके बाद, प्रोजेक्ट मिटाने के लिए बंद करें पर क्लिक करें.
संसाधन
- Document AI Workbench से जुड़े दस्तावेज़
- द फ़्यूचर ऑफ़ डॉक्यूमेंट्स - YouTube प्लेलिस्ट
- Document AI से जुड़े दस्तावेज़
- Document AI Python क्लाइंट लाइब्रेरी
- Document AI के सैंपल
लाइसेंस
इस काम के लिए, Creative Commons एट्रिब्यूशन 2.0 जेनेरिक लाइसेंस के तहत लाइसेंस मिला है.