1. بررسی اجمالی
Document AI چیست؟
Document AI API راه حلی برای درک اسناد است که داده های بدون ساختار مانند اسناد، ایمیل ها و غیره را دریافت می کند و درک، تجزیه و تحلیل و مصرف داده ها را آسان تر می کند. API ساختار را از طریق طبقه بندی محتوا، استخراج موجودیت، جستجوی پیشرفته و موارد دیگر ارائه می دهد.
در این آموزش، شما بر روی استفاده از Document AI API با Node.js تمرکز می کنید. این آموزش نحوه تجزیه یک فرم دریافت ساده پزشکی را نشان می دهد.
چیزی که یاد خواهید گرفت
- نحوه فعال کردن Document AI API
- نحوه احراز هویت درخواست های API
- نحوه نصب کتابخانه مشتری برای Node.js
- نحوه تجزیه اطلاعات از فرم اسکن شده
آنچه شما نیاز دارید
نظرسنجی
چگونه از این آموزش استفاده خواهید کرد؟
تجربه خود را با Node.js چگونه ارزیابی می کنید؟
تجربه خود را در استفاده از خدمات Google Cloud چگونه ارزیابی می کنید؟
2. راه اندازی و الزامات
تنظیم محیط خود به خود
- به کنسول Cloud وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. (اگر قبلاً یک حساب Gmail یا G Suite ندارید، باید یک حساب ایجاد کنید .)
شناسه پروژه را به خاطر بسپارید، یک نام منحصر به فرد در تمام پروژه های Google Cloud. (نام شما در بالا قبلاً گرفته شده است و برای شما کار نخواهد کرد، متاسفم!). شما باید این شناسه را بعداً به عنوان PROJECT_ID
ارائه دهید.
- در مرحله بعد، برای استفاده از منابع Google Cloud، باید صورتحساب را در Cloud Console فعال کنید .
حتماً دستورالعملهای موجود در بخش «تمیز کردن» را دنبال کنید. این بخش به شما توصیه می کند که چگونه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در حالی که Google Cloud میتوانید Google Cloud را از راه دور از لپتاپ خود کار کنید، این کد لبه از Google Cloud Shell استفاده میکند، یک محیط خط فرمان که در Cloud اجرا میشود.
Cloud Shell را فعال کنید
- از Cloud Console، روی Activate Cloud Shell کلیک کنید .
اگر قبلاً Cloud Shell را راهاندازی نکردهاید، یک صفحه میانی (در زیر تاشو) برای شما نمایش داده میشود که آن را توصیف میکند. اگر اینطور است، روی Continue کلیک کنید (و دیگر آن را نخواهید دید). در اینجا به نظر می رسد که آن صفحه یک بار مصرف:
تهیه و اتصال به Cloud Shell فقط باید چند لحظه طول بکشد.
Cloud Shell دسترسی ترمینال به یک ماشین مجازی که در فضای ابری میزبانی شده است را برای شما فراهم می کند. ماشین مجازی شامل تمام ابزارهای توسعه است که شما نیاز دارید. این دایرکتوری اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد شبکه و احراز هویت را بسیار افزایش می دهد. بیشتر، اگر نه همه، کار شما در این کد لبه را می توان به سادگی با یک مرورگر یا Chromebook انجام داد.
پس از اتصال به Cloud Shell، باید ببینید که قبلاً احراز هویت شده اید و پروژه قبلاً روی ID پروژه شما تنظیم شده است.
- برای تایید احراز هویت، دستور زیر را در 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 را فعال کنید
قبل از شروع استفاده از Document AI، باید API را فعال کنید. Cloud Console را در مرورگر خود باز کنید.
- روی منوی پیمایش ☰ > APIs & Services > Library کلیک کنید.
- «Document AI API» را جستجو کنید، سپس روی Enable کلیک کنید تا از API در پروژه Google Cloud خود استفاده کنید
4. ایجاد و تست یک پردازنده
ابتدا باید یک نمونه از پردازشگر Form Parser ایجاد کنید تا در Document AI Platform برای این آموزش استفاده کنید.
- در کنسول، به Document AI Platform Overview بروید
- روی Create Processor کلیک کرده و Form Parser را انتخاب کنید
- نام پردازنده را مشخص کنید و منطقه خود را از لیست انتخاب کنید.
- برای ایجاد پردازنده خود روی Create کلیک کنید
- شناسه پردازنده خود را کپی کنید. بعدا باید از این در کد خود استفاده کنید.
(اختیاری) می توانید با آپلود یک سند، پردازنده خود را در کنسول آزمایش کنید. روی آپلود سند کلیک کنید و فرمی را برای تجزیه انتخاب کنید. اگر فرمی برای استفاده در دسترس ندارید، می توانید این نمونه فرم را دانلود و استفاده کنید.
خروجی شما باید به این شکل باشد:
5. احراز هویت درخواست های API
برای ارسال درخواست به Document AI API، باید از یک حساب سرویس استفاده کنید. یک حساب سرویس متعلق به پروژه شما است و توسط کتابخانه Google Client Node.js برای درخواست های API استفاده می شود. مانند هر حساب کاربری دیگری، یک حساب سرویس با یک آدرس ایمیل نشان داده می شود. در این بخش، از 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 را تنظیم کنید، که توسط کتابخانه برای یافتن اعتبار شما استفاده می شود. برای مطالعه بیشتر در مورد این احراز هویت فرم، به راهنما مراجعه کنید. متغیر محیطی باید با استفاده از:
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
کتابخانه مشتری Document AI را نصب کنید:
npm install @google-cloud/documentai
8. یک درخواست سند فرآیند همزمان ایجاد کنید
در این مرحله، با استفاده از نقطه پایانی همزمان، یک فراخوانی سند فرآیند برقرار میکنید. برای پردازش مقادیر زیادی از اسناد در یک زمان، میتوانید از API ناهمزمان نیز استفاده کنید، برای کسب اطلاعات بیشتر در مورد استفاده از APIهای تجزیهکننده فرم، راهنمای اینجا را بخوانید.
یک فایل 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. Form Key/Value Pairs را استخراج کنید
اکنون می توانید جفت های کلید-مقدار را از فرم و امتیازات اطمینان مربوط به آنها استخراج کنید. شیء پاسخ سند حاوی فهرستی از صفحات از سند ورودی است. هر شی 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()
از داخل تابع main اضافه کنید و شیء به دست آمده را به صورت جدول چاپ کنید.
/**
* 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، به صفحه مدیریت منابع بروید.
- در لیست پروژه، پروژه خود را انتخاب کنید و سپس روی Delete کلیک کنید.
- در گفتگو، ID پروژه را تایپ کنید و سپس بر روی Shut down کلیک کنید تا پروژه حذف شود.
بیشتر بدانید
- آینده اسناد - لیست پخش YouTube
- مستندات هوش مصنوعی
- مرجع کتابخانه مشتری AI Node.js سند
- Document AI Node.js Samples