दस्तावेज़ एआई की मदद से, हाथ से लिखे गए फ़ॉर्म (Node.js) को बेहतर तरीके से प्रोसेस करें

1. खास जानकारी

डॉक्यूमेंट एआई (AI) क्या है?

Document AI API, दस्तावेज़ों को समझने का एक तरीका है, जो दस्तावेज़, ईमेल वगैरह जैसे बिना स्ट्रक्चर किए डेटा का इस्तेमाल करता है. यह डेटा को समझने, उसका विश्लेषण करने, और उसका इस्तेमाल करने में आसान बनाता है. यह एपीआई, कॉन्टेंट क्लासिफ़िकेशन, इकाई एक्सट्रैक्शन, बेहतर खोज वगैरह के ज़रिए स्ट्रक्चर उपलब्ध कराता है.

इस ट्यूटोरियल में, आपने Node.js के साथ Document AI API को इस्तेमाल करने पर फ़ोकस किया है. इस ट्यूटोरियल में, मेडिकल इनटेक फ़ॉर्म को पार्स करने का तरीका बताया गया है.

आपको इनके बारे में जानकारी मिलेगी

  • Document AI API को चालू करने का तरीका
  • एपीआई अनुरोधों की पुष्टि करने का तरीका
  • Node.js के लिए क्लाइंट लाइब्रेरी इंस्टॉल करने का तरीका
  • स्कैन किए गए फ़ॉर्म से डेटा पार्स करने का तरीका

आपको इन चीज़ों की ज़रूरत होगी

  • Google Cloud प्रोजेक्ट
  • ब्राउज़र, जैसे कि Chrome या Firefox
  • Node.js के बारे में जानकारी

सर्वे

इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?

इसे सिर्फ़ पढ़ें इसे पढ़ें और कसरतों को पूरा करें

आप Node.js के साथ अपने अनुभव को क्या रेटिंग देंगे/देंगी?

शुरुआती इंटरमीडिएट कुशल

Google Cloud की सेवाएं इस्तेमाल करने का आपका अनुभव कैसा रहा?

शुरुआती इंटरमीडिएट कुशल

2. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेटअप करना

  1. Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. (अगर आपके पास पहले से Gmail या G Suite खाता नहीं है, तो आपको एक खाता बनाना होगा.)

प्रोजेक्ट आईडी याद रखें. यह Google Cloud के सभी प्रोजेक्ट के लिए एक खास नाम होता है. (आपका ऊपर दिया गया नाम पहले ही लिया जा चुका है और आपके लिए यह काम नहीं करेगा, क्षमा करें!). आपको यह आईडी बाद में, PROJECT_ID के तौर पर देना होगा.

  1. इसके बाद, आपको Google Cloud के संसाधनों का इस्तेमाल करने के लिए, Cloud Console में बिलिंग की सुविधा चालू करनी होगी.

"साफ़ करना" सेक्शन में दिए गए निर्देशों का पालन करना न भूलें सेक्शन में जाएं. इस सेक्शन में, संसाधनों को बंद करने का तरीका बताया गया है. इससे इस ट्यूटोरियल के अलावा बिलिंग की सुविधा नहीं मिलेगी. Google Cloud के नए उपयोगकर्ता, 300USD डॉलर के मुफ़्त में आज़माने वाले प्रोग्राम में हिस्सा ले सकते हैं.

Cloud Shell शुरू करना

Google Cloud को अपने लैपटॉप से, कहीं से भी इस्तेमाल किया जा सकता है. हालांकि, यह कोडलैब Google Cloud Shell का इस्तेमाल करता है. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

Cloud Shell चालू करें

  1. Cloud Console में, Cloud Shell चालू करें H7JlbhKGHITmsxhQIcLwoe5HXZMhDlYue4K-SPszMxUxDjIeWfOHBfxDHYpmLQTzUmQ7Xx8o6OJANnQF0iBuUyfp1RzVad_4nCa0zLUDZLGFGFl पर क्लिक करें.

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb-IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFI4IRF0W7WZk6hFqZDUGXQQXrw21GuMm2ecHrbzQ

अगर आपने पहले कभी Cloud Shell का इस्तेमाल शुरू नहीं किया है, तो आपको एक इंटरमीडिएट स्क्रीन (पेज के फ़ोल्ड के नीचे) दिखेगी, जो यह बताती है कि यह क्या है. अगर ऐसा है, तो जारी रखें पर क्लिक करें (यह आपको फिर कभी नहीं दिखेगा). एक बार इस्तेमाल होने वाली स्क्रीन कुछ इस तरह दिखती है:

kEPbNAo_w5C_pi9QvhFwWwky1cX8hr_xEMGWySNIoMCdi-Djx9AQRqWn-__DmEpC7vKgUtl-feTcv-wBxJ8NwzzAp7mY65-fi2LJo4twUoewT1SUjd6Y3h81RG3rKIkqhoVlFR-G7w

प्रावधान करने और Cloud Shell से कनेक्ट होने में कुछ ही समय लगेगा.

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7yR1NseZKJvcxAZrPb8wRxoqyTpD-gbhA

Cloud Shell से आपको क्लाउड में होस्ट की जाने वाली वर्चुअल मशीन का टर्मिनल ऐक्सेस मिलता है. वर्चुअल मशीन में वे सभी डेवलपमेंट टूल होते हैं जिनकी आपको ज़रूरत होती है. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और Google Cloud में चलता है. यह नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस को बेहतर बनाता है. अगर सभी नहीं, तो इस कोडलैब में आपका बहुत सारा काम बस किसी ब्राउज़र या आपके Chromebook से किया जा सकता है.

Cloud Shell से कनेक्ट करने के बाद, आपको दिखेगा कि आपकी पुष्टि पहले ही हो चुकी है. साथ ही, यह प्रोजेक्ट पहले से ही आपके प्रोजेक्ट आईडी पर सेट है.

  1. यह पुष्टि करने के लिए Cloud Shell में नीचे दिया गया कमांड चलाएं कि आपकी पुष्टि हो गई है:
gcloud auth list

कमांड आउटपुट

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

कमांड आउटपुट

[core]
project = <PROJECT_ID>

अगर ऐसा नहीं है, तो आप इसे इस निर्देश की मदद से सेट कर सकते हैं:

gcloud config set project <PROJECT_ID>

कमांड आउटपुट

Updated property [core/project].

3. Cloud Document AI API चालू करना

दस्तावेज़ एआई (AI) का इस्तेमाल शुरू करने से पहले, आपको एपीआई चालू करना होगा. अपने ब्राउज़र में Cloud Console खोलें.

  1. नेविगेशन मेन्यू रजिस्ट्रेंट पर क्लिक करें > एपीआई और सेवाएं > लाइब्रेरी. खोज API
  2. "Document AI API" खोजें. इसके बाद, अपने Google Cloud प्रोजेक्ट में एपीआई का इस्तेमाल करने के लिए, चालू करें पर क्लिक करें

4. प्रोसेसर बनाना और उसकी जांच करना

सबसे पहले आपको इस ट्यूटोरियल के लिए दस्तावेज़ AI Platform में इस्तेमाल करने के लिए फ़ॉर्म पार्सर प्रोसेसर का एक इंस्टेंस बनाना होगा.

  1. कंसोल में, दस्तावेज़ एआई प्लैटफ़ॉर्म की खास जानकारी पर जाएं
  2. प्रोसेसर बनाएं पर क्लिक करें और फ़ॉर्म पार्सर चुनेंप्रोसेसर
  3. प्रोसेसर का नाम डालें और सूची में से अपना क्षेत्र चुनें.
  4. अपना प्रोसेसर बनाने के लिए, बनाएं पर क्लिक करें
  5. अपना प्रोसेसर आईडी कॉपी करें. आपको बाद में अपने कोड में इसका इस्तेमाल करना होगा.

(ज़रूरी नहीं) दस्तावेज़ अपलोड करके, कंसोल में अपने प्रोसेसर की जांच की जा सकती है. दस्तावेज़ अपलोड करें पर क्लिक करें और पार्स करने के लिए कोई फ़ॉर्म चुनें. अगर आपके पास इस्तेमाल के लिए कोई फ़ॉर्म नहीं है, तो इस सैंपल फ़ॉर्म को डाउनलोड करके इस्तेमाल किया जा सकता है.

हेल्थ फ़ॉर्म

आपका आउटपुट ऐसा दिखना चाहिए: पार्स किया गया फ़ॉर्म

5. एपीआई अनुरोधों की पुष्टि करें

Document AI API को अनुरोध करने के लिए, आपको किसी सेवा खाते का इस्तेमाल करना होगा. सेवा खाता आपके प्रोजेक्ट से जुड़ा होता है. Google क्लाइंट Node.js लाइब्रेरी इसका इस्तेमाल, एपीआई अनुरोध करने के लिए करती है. किसी भी दूसरे उपयोगकर्ता खाते की तरह, सेवा खाते को ईमेल पते के तौर पर दिखाया जाता है. इस सेक्शन में, आपको सेवा खाता बनाने के लिए Cloud SDK टूल का इस्तेमाल करना होगा. इसके बाद, ऐसे क्रेडेंशियल बनाने होंगे जिनकी पुष्टि सेवा खाते के तौर पर करनी हो.

सबसे पहले, अपने PROJECT_ID के साथ एक एनवायरमेंट वैरिएबल सेट करें, जिसका इस्तेमाल आपको इस कोडलैब के दौरान करना है:

export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)

इसके बाद, Document AI API को ऐक्सेस करने के लिए नया सेवा खाता बनाएं. इसके लिए, इनका इस्तेमाल करें:

gcloud iam service-accounts create my-docai-sa \
  --display-name "my-docai-service-account"

इसके बाद, वे क्रेडेंशियल बनाएं जिनका इस्तेमाल आपका Node.js कोड आपके नए सेवा खाते के तौर पर लॉगिन करने के लिए करता है. ये क्रेडेंशियल बनाएं और इन्हें JSON फ़ाइल "~/key.json" के तौर पर सेव करें इसके लिए, इनमें से कोई विकल्प चुना जा सकता है:

gcloud iam service-accounts keys create ~/key.json \
  --iam-account  my-docai-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com

आखिर में, GOOGLE_APPLICATION_CREDENTIALS एनवायरमेंट वैरिएबल सेट करें. लाइब्रेरी इसका इस्तेमाल आपके क्रेडेंशियल ढूंढने के लिए करती है. इस फ़ॉर्म की पुष्टि के बारे में ज़्यादा जानने के लिए, गाइड देखें. एनवायरमेंट वैरिएबल को आपकी बनाई गई क्रेडेंशियल JSON फ़ाइल के पूरे पाथ पर सेट किया जाना चाहिए. इसके लिए, इनका इस्तेमाल करें:

export GOOGLE_APPLICATION_CREDENTIALS="/path/to/key.json"

6. सैंपल फ़ॉर्म डाउनलोड करें

हमारे पास एक सैंपल फ़ॉर्म है, जिसका इस्तेमाल हम Google Cloud Storage के सार्वजनिक सैंपल बकेट में कर सकते हैं. इसे अपनी चालू डायरेक्ट्री में डाउनलोड करने के लिए, नीचे दिए गए निर्देश का इस्तेमाल करें.

gsutil cp gs://cloud-samples-data/documentai/form.pdf .

नीचे दिए गए निर्देश का इस्तेमाल करके, पुष्टि करें कि फ़ाइल आपके क्लाउडशेल में डाउनलोड हो गई है:

ls -ltr form.pdf

7. क्लाइंट लाइब्रेरी इंस्टॉल करना

इसके बाद, अपनी वर्किंग डायरेक्ट्री में अपना कोड सेट अप करें.

नया Node.js पैकेज शुरू करना:

npm init

दस्तावेज़ एआई क्लाइंट लाइब्रेरी इंस्टॉल करें:

npm install @google-cloud/documentai

8. सिंक्रोनस प्रोसेस से जुड़े दस्तावेज़ का अनुरोध करें

इस चरण में, सिंक्रोनस एंडपॉइंट का इस्तेमाल करके प्रोसेस दस्तावेज़ कॉल किया जाता है. एक बार में बड़ी संख्या में दस्तावेज़ों को प्रोसेस करने के लिए, एसिंक्रोनस एपीआई का भी इस्तेमाल किया जा सकता है. फ़ॉर्म पार्सर एपीआई इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, गाइड यहां पढ़ें.

कोई index.js फ़ाइल बनाएं और यह कोड चिपकाएं. अपने प्रोसेसर की जानकारी के साथ लागू वैरिएबल भरें.

const { DocumentProcessorServiceClient } = require('@google-cloud/documentai').v1;
const fs = require('fs');

/**
 * Runs the sample document through Document AI to get key/value pairs and
 * confidence scores.
 */
async function processDocument(projectId, location, processorId, filePath, mimeType) {
    // Instantiates a client
    const documentaiClient = new DocumentProcessorServiceClient();

    // The full resource name of the processor, e.g.:
    // projects/project-id/locations/location/processor/processor-id
    // You must create new processors in the Cloud Console first
    const resourceName = documentaiClient.processorPath(projectId, location, processorId);

    // Read the file into memory.
    const imageFile = fs.readFileSync(filePath);

    // Convert the image data to a Buffer and base64 encode it.
    const encodedImage = Buffer.from(imageFile).toString('base64');

    // Load Binary Data into Document AI RawDocument Object
    const rawDocument = {
        content: encodedImage,
        mimeType: mimeType,
    };

    // Configure ProcessRequest Object
    const request = {
        name: resourceName,
        rawDocument: rawDocument
    };

    // Use the Document AI client to process the sample form
    const [result] = await documentaiClient.processDocument(request);

    return result.document;
}

/**
 * Run the codelab.
 */
async function main() {
    const projectId = 'YOUR_PROJECT_ID';
    const location = 'YOUR_PROJECT_LOCATION'; // Format is 'us' or 'eu'
    const processorId = 'YOUR_PROCESSOR_ID'; // Should be a Hexadecimal string

    // Supported File Types
    // https://cloud.google.com/document-ai/docs/processors-list#processor_form-parser
    filePath = 'form.pdf'; // The local file in your current working directory
    mimeType = 'application/pdf';

    const document = await processDocument(projectId, location, processorId, filePath, mimeType);
    console.log("Document Processing Complete");

    // Print the document text as one big string
    console.log(`Text: ${document.text}`);
}

main(...process.argv.slice(2)).catch(err => {
    console.error(err);
    process.exitCode = 1;
});

अभी अपना कोड चलाएं. इससे, आपके कंसोल में प्रिंट किया गया यह टेक्स्ट दिखेगा.

Text: FakeDoc M.D.
HEALTH INTAKE FORM
Please fill out the questionnaire carefully. The information you provide will be used to complete
your health profile and will be kept confidential.
Name:
Date:
Sally
Walker
DOB: 09/04/1986
Address: 24 Barney Lane City: Towalo State: NJ Zip: 07082
Email: Sally, waller@cmail.com Phone #: (906) 917-3486
Gender:
Marital Status: Single Occupation: Software Engineer
Referred By: None
Emergency Contact: Eva Walker Emergency Contact Phone: (906) 334-8926
Describe your medical concerns (symptoms, diagnoses, etc):
Runny nose, mucas in throat, weakness,
aches, chills, tired
Are you currently taking any medication? (If yes, please describe):
Vyvanse (25mg) daily for attention

अगले चरणों में, स्ट्रक्चर्ड डेटा एक्सट्रैक्ट किया जाएगा जिसे डेटाबेस में आसानी से सेव किया जा सकता है या दूसरे ऐप्लिकेशन में इस्तेमाल किया जा सकता है.

9. फ़ॉर्म कुंजी/वैल्यू पेयर निकालें

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

नीचे दिया गया कोड हर पेज पर फिर से लागू होता है और हर कुंजी, वैल्यू, और कॉन्फ़िडेंस स्कोर को एक्सट्रैक्ट करता है.

अपने कोड में यह फ़ंक्शन जोड़ें.

/**
 * Extract form data and confidence from processed document.
 */
function extractFormData(document) {
    // Extract shards from the text field
    function getText(textAnchor, document) {
        if (!textAnchor.textSegments || textAnchor.textSegments.length === 0) {
            return '';
        }

        // First shard in document doesn't have startIndex property
        const startIndex = textAnchor.textSegments[0].startIndex || 0;
        const endIndex = textAnchor.textSegments[0].endIndex;

        return document.text.substring(startIndex, endIndex);
    }

    var formData = [];

    const pages = document.pages;

    pages.forEach((page) => {
        const formFields = page.formFields;
        formFields.forEach((field) => {
            // Get the extracted field names and remove extra space from text
            const fieldName = getText(field.fieldName.textAnchor, document);
            // Confidence - How "sure" the API is that the text is correct
            const nameConfidence = field.fieldName.confidence.toFixed(4);

            const fieldValue = getText(field.fieldValue.textAnchor, document);
            const valueConfidence = field.fieldValue.confidence.toFixed(4);

            formData.push({
                fieldName: fieldName,
                fieldValue: fieldValue,
                nameConfidence: nameConfidence,
                valueConfidence: valueConfidence
            });
        });
    });

    return formData;
}

मुख्य फ़ंक्शन के अंदर से extractFormData() फ़ंक्शन में कॉल जोड़ें और नतीजे के तौर पर मिलने वाले ऑब्जेक्ट को टेबल के रूप में प्रिंट करें.

/**
 * Run the codelab.
 */
async function main() {
    const projectId = 'YOUR_PROJECT_ID';
    const location = 'YOUR_PROJECT_LOCATION'; // Format is 'us' or 'eu'
    const processorId = 'YOUR_PROCESSOR_ID'; // Should be a Hexadecimal string

    // Supported File Types
    // https://cloud.google.com/document-ai/docs/processors-list#processor_form-parser
    filePath = 'form.pdf'; // The local file in your current working directory
    mimeType = 'application/pdf';

    const document = await processDocument(projectId, location, processorId, filePath, mimeType);
    const formData = extractFormData(document);

    console.log('\nThe following form key/value pairs were detected:');
    console.table(formData);
}

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

The following form key/value pairs were detected:
┌─────────┬────────────────────────────────────────────────────────────────┬──────────────────────────────────────────────────────────────────┬────────────────┬─────────────────┐
│ (index) │                           fieldName                            │                            fieldValue                            │ nameConfidence │ valueConfidence │
├─────────┼────────────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┼────────────────┼─────────────────┤
│    0    │                       'Marital Status: '                       │                            'Single '                             │    '1.0000'    │    '1.0000'     │
│    1    │                            'DOB: '                             │                          '09/04/1986\n'                          │    '0.9999'    │    '0.9999'     │
│    2    │                            'City: '                            │                            'Towalo '                             │    '0.9996'    │    '0.9996'     │
│    3    │                          'Address: '                           │                        '24 Barney Lane '                         │    '0.9994'    │    '0.9994'     │
│    4    │                        'Referred By: '                         │                             'None\n'                             │    '0.9968'    │    '0.9968'     │
│    5    │                          'Phone #: '                           │                        '(906) 917-3486\n'                        │    '0.9961'    │    '0.9961'     │
│    6    │                           'State: '                            │                              'NJ '                               │    '0.9960'    │    '0.9960'     │
│    7    │                  'Emergency Contact Phone: '                   │                        '(906) 334-8926\n'                        │    '0.9925'    │    '0.9925'     │
│    8    │                           'Name:\n'                            │                        'Sally\nWalker\n'                         │    '0.9922'    │    '0.9922'     │
│    9    │                         'Occupation: '                         │                      'Software Engineer\n'                       │    '0.9914'    │    '0.9914'     │
│   10    │                            'Zip: '                             │                            '07082\n'                             │    '0.9904'    │    '0.9904'     │
│   11    │                           'Email: '                            │                    'Sally, waller@cmail.com '                    │    '0.9681'    │    '0.9681'     │
│   12    │                     'Emergency Contact: '                      │                          'Eva Walker '                           │    '0.9430'    │    '0.9430'     │
│   13    │ 'Describe your medical concerns (symptoms, diagnoses, etc):\n' │ 'Runny nose, mucas in throat, weakness,\naches, chills, tired\n' │    '0.7817'    │    '0.7817'     │
└─────────┴────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────┴────────────────┴─────────────────┘

10. बधाई हो!

बधाई हो, आपने हाथ से लिखे गए फ़ॉर्म से डेटा निकालने के लिए, Document AI API का सही तरीके से इस्तेमाल कर लिया है. हमारा सुझाव है कि आप अन्य फ़ॉर्म इमेज के साथ एक्सपेरिमेंट करें.

स्टोरेज खाली करें

इस ट्यूटोरियल में इस्तेमाल किए गए संसाधनों के लिए, आपके Google Cloud खाते पर लगने वाले शुल्क से बचने के लिए:

  • Cloud Console में, संसाधन मैनेज करें पेज पर जाएं.
  • प्रोजेक्ट की सूची में, अपना प्रोजेक्ट चुनें. इसके बाद, 'मिटाएं' पर क्लिक करें.
  • डायलॉग बॉक्स में, प्रोजेक्ट आईडी टाइप करें. इसके बाद, प्रोजेक्ट मिटाने के लिए 'शट डाउन करें' पर क्लिक करें.

ज़्यादा जानें

लाइसेंस

इस काम को क्रिएटिव कॉमंस एट्रिब्यूशन 2.0 जेनरिक लाइसेंस के तहत लाइसेंस मिला है.