1. ভূমিকা
এই কোডল্যাবে, আপনি শিখবেন কিভাবে ডকুমেন্ট এআই স্পেশালাইজড প্রসেসর ব্যবহার করে পাইথনের সাথে বিশেষায়িত নথিগুলিকে শ্রেণীবদ্ধ এবং পার্স করতে হয়। শ্রেণীবিভাগ এবং বিভাজনের জন্য, আমরা চালান, রসিদ এবং ইউটিলিটি বিবৃতি সহ একটি উদাহরণ পিডিএফ ফাইল ব্যবহার করব। তারপর, পার্সিং এবং সত্তা নিষ্কাশনের জন্য, আমরা উদাহরণ হিসাবে একটি চালান ব্যবহার করব।
এই পদ্ধতি এবং উদাহরণ কোড ডকুমেন্ট এআই দ্বারা সমর্থিত যেকোন বিশেষ নথির সাথে কাজ করবে।
পূর্বশর্ত
এই কোডল্যাব অন্যান্য ডকুমেন্ট এআই কোডল্যাবে উপস্থাপিত বিষয়বস্তুর উপর তৈরি করে।
এটি সুপারিশ করা হয় যে আপনি এগিয়ে যাওয়ার আগে নিম্নলিখিত কোডল্যাবগুলি সম্পূর্ণ করুন:
- ডকুমেন্ট এআই এবং পাইথন সহ অপটিক্যাল ক্যারেক্টার রিকগনিশন (ওসিআর)
- ডকুমেন্ট এআই (পাইথন) সহ ফর্ম পার্সিং
আপনি কি শিখবেন
- বিশেষায়িত নথিগুলির জন্য বিভক্ত পয়েন্টগুলি কীভাবে শ্রেণিবদ্ধ করা যায় এবং সনাক্ত করা যায়।
- স্পেশালাইজড প্রসেসর ব্যবহার করে কীভাবে স্কিমেটাইজড সত্তাগুলো বের করা যায়।
আপনি কি প্রয়োজন হবে
- একটি Google ক্লাউড প্রকল্প
- একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
- পাইথনের জ্ঞান 3
2. সেট আপ করা হচ্ছে
এই কোডল্যাব অনুমান করে যে আপনি Introductory Codelab- এ তালিকাভুক্ত ডকুমেন্ট AI সেটআপ ধাপগুলি সম্পূর্ণ করেছেন৷
এগিয়ে যাওয়ার আগে অনুগ্রহ করে নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:
আপনাকে পান্ডাস ইনস্টল করতে হবে, পাইথনের জন্য একটি জনপ্রিয় ডেটা বিশ্লেষণ লাইব্রেরি।
pip3 install --upgrade pandas
3. বিশেষায়িত প্রসেসর তৈরি করুন
আপনি প্রথমে এই টিউটোরিয়ালের জন্য যে প্রসেসরগুলি ব্যবহার করবেন তার উদাহরণ তৈরি করতে হবে।
- কনসোলে, ডকুমেন্ট এআই প্ল্যাটফর্ম ওভারভিউতে নেভিগেট করুন
- প্রসেসর তৈরি করুন ক্লিক করুন, স্পেশালাইজডে স্ক্রোল করুন এবং প্রকিউরমেন্ট ডক স্প্লিটার নির্বাচন করুন।
- এটিকে "codelab-procurement-splitter" নাম দিন (অথবা অন্য কিছু যা আপনি মনে রাখবেন) এবং তালিকার নিকটতম অঞ্চলটি নির্বাচন করুন৷
- আপনার প্রসেসর তৈরি করতে তৈরি করুন ক্লিক করুন
- প্রসেসর আইডি কপি করুন। আপনাকে অবশ্যই এটি আপনার কোডে ব্যবহার করতে হবে।
- চালান পার্সারের সাথে ধাপ 2-6 পুনরাবৃত্তি করুন (যাকে আপনি "কোডল্যাব-ইনভয়েস-পার্সার" নাম দিতে পারেন)
কনসোলে পরীক্ষা প্রসেসর
আপনি একটি নথি আপলোড করে কনসোলে চালান পার্সার পরীক্ষা করতে পারেন।
আপলোড ডকুমেন্টে ক্লিক করুন এবং পার্স করার জন্য একটি চালান নির্বাচন করুন। আপনি এই নমুনা চালান ডাউনলোড এবং ব্যবহার করতে পারেন যদি আপনার ব্যবহার করার জন্য উপলব্ধ না থাকে।
আপনার আউটপুট এই মত হওয়া উচিত:
4. নমুনা নথি ডাউনলোড করুন
এই ল্যাবের জন্য ব্যবহার করার জন্য আমাদের কাছে কয়েকটি নমুনা নথি রয়েছে।
আপনি নিম্নলিখিত লিঙ্কগুলি ব্যবহার করে PDF ডাউনলোড করতে পারেন। তারপর সেগুলিকে ক্লাউড শেল ইনস্ট্যান্সে আপলোড করুন ।
বিকল্পভাবে, আপনি gsutil
ব্যবহার করে আমাদের পাবলিক ক্লাউড স্টোরেজ বাকেট থেকে সেগুলি ডাউনলোড করতে পারেন।
gsutil cp gs://cloud-samples-data/documentai/codelabs/specialized-processors/procurement_multi_document.pdf .
gsutil cp gs://cloud-samples-data/documentai/codelabs/specialized-processors/google_invoice.pdf .
5. নথি শ্রেণীবদ্ধ করুন এবং বিভক্ত করুন
এই ধাপে আপনি একটি মাল্টি-পেজ ডকুমেন্টের জন্য লজিক্যাল স্প্লিট পয়েন্ট শ্রেণীবদ্ধ করতে এবং সনাক্ত করতে অনলাইন প্রক্রিয়াকরণ API ব্যবহার করবেন।
আপনি যদি একাধিক ফাইল পাঠাতে চান বা যদি ফাইলের আকার অনলাইন প্রক্রিয়াকরণের সর্বোচ্চ পৃষ্ঠার চেয়ে বেশি হয় তবে আপনি ব্যাচ প্রসেসিং API ব্যবহার করতে পারেন৷ আপনি ডকুমেন্ট AI OCR কোডল্যাবে এটি কীভাবে করবেন তা পর্যালোচনা করতে পারেন।
এপিআই অনুরোধ করার কোড প্রসেসর আইডি বাদ দিয়ে সাধারণ প্রসেসরের জন্য অভিন্ন।
প্রকিউরমেন্ট স্প্লিটার/ক্ল্যাসিফায়ার
classification.py
নামে একটি ফাইল তৈরি করুন এবং নীচের কোডটি ব্যবহার করুন।
আপনার আগে তৈরি করা প্রকিউরমেন্ট স্প্লিটার প্রসেসরের ID দিয়ে PROCUREMENT_SPLITTER_ID
প্রতিস্থাপন করুন। যথাক্রমে YOUR_PROJECT_ID
এবং YOUR_PROJECT_LOCATION
আপনার ক্লাউড প্রকল্প আইডি এবং প্রসেসরের অবস্থান দিয়ে প্রতিস্থাপন করুন।
classification.py
import pandas as pd
from google.cloud import documentai_v1 as documentai
def online_process(
project_id: str,
location: str,
processor_id: str,
file_path: str,
mime_type: str,
) -> documentai.Document:
"""
Processes a document using the Document AI Online Processing API.
"""
opts = {"api_endpoint": f"{location}-documentai.googleapis.com"}
# Instantiates a client
documentai_client = documentai.DocumentProcessorServiceClient(client_options=opts)
# 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
resource_name = documentai_client.processor_path(project_id, location, processor_id)
# Read the file into memory
with open(file_path, "rb") as file:
file_content = file.read()
# Load Binary Data into Document AI RawDocument Object
raw_document = documentai.RawDocument(content=file_content, mime_type=mime_type)
# Configure the process request
request = documentai.ProcessRequest(name=resource_name, raw_document=raw_document)
# Use the Document AI client to process the sample form
result = documentai_client.process_document(request=request)
return result.document
PROJECT_ID = "YOUR_PROJECT_ID"
LOCATION = "YOUR_PROJECT_LOCATION" # Format is 'us' or 'eu'
PROCESSOR_ID = "PROCUREMENT_SPLITTER_ID" # Create processor in Cloud Console
# The local file in your current working directory
FILE_PATH = "procurement_multi_document.pdf"
# Refer to https://cloud.google.com/document-ai/docs/processors-list
# for supported file types
MIME_TYPE = "application/pdf"
document = online_process(
project_id=PROJECT_ID,
location=LOCATION,
processor_id=PROCESSOR_ID,
file_path=FILE_PATH,
mime_type=MIME_TYPE,
)
print("Document processing complete.")
types = []
confidence = []
pages = []
# Each Document.entity is a classification
for entity in document.entities:
classification = entity.type_
types.append(classification)
confidence.append(f"{entity.confidence:.0%}")
# entity.page_ref contains the pages that match the classification
pages_list = []
for page_ref in entity.page_anchor.page_refs:
pages_list.append(page_ref.page)
pages.append(pages_list)
# Create a Pandas Dataframe to print the values in tabular format.
df = pd.DataFrame({"Classification": types, "Confidence": confidence, "Pages": pages})
print(df)
আপনার আউটপুট এই মত কিছু দেখতে হবে:
$ python3 classification.py Document processing complete. Classification Confidence Pages 0 invoice_statement 100% [0] 1 receipt_statement 98% [1] 2 other 81% [2] 3 utility_statement 100% [3] 4 restaurant_statement 100% [4]
নোট করুন প্রকিউরমেন্ট স্প্লিটার/ক্ল্যাসিফায়ার 0-1 এবং 3-4 পৃষ্ঠায় নথির ধরন সঠিকভাবে চিহ্নিত করেছে।
পৃষ্ঠা 2-এ একটি জেনেরিক মেডিকেল ইনটেক ফর্ম রয়েছে, তাই শ্রেণীবিভাগকারী সঠিকভাবে এটিকে other
হিসাবে চিহ্নিত করেছে।
6. সত্তা নিষ্কাশন
এখন আপনি কনফিডেন্স স্কোর, বৈশিষ্ট্য এবং স্বাভাবিক মান সহ ফাইলগুলি থেকে স্কিমেটাইজড সত্তাগুলি বের করতে পারেন।
API অনুরোধ করার জন্য কোডটি পূর্ববর্তী ধাপের অনুরূপ, এবং এটি অনলাইন বা ব্যাচ অনুরোধের সাথে করা যেতে পারে।
আমরা সত্তা থেকে নিম্নলিখিত তথ্য অ্যাক্সেস করব:
- সত্তার ধরন
- (যেমন
invoice_date
,receiver_name
,total_amount
)
- (যেমন
- কাঁচা মান
- মূল নথি ফাইলে উপস্থাপিত ডেটা মান।
- স্বাভাবিক মান
- প্রযোজ্য হলে ডেটা মান একটি স্বাভাবিক এবং মানক বিন্যাসে।
- এছাড়াও এন্টারপ্রাইজ নলেজ গ্রাফ থেকে সমৃদ্ধি অন্তর্ভুক্ত করতে পারে
- আত্মবিশ্বাসের মূল্যবোধ
- মডেলটি কতটা "নিশ্চিত" যে মানগুলি সঠিক।
কিছু সত্তার ধরন, যেমন line_item
এমন বৈশিষ্ট্যও অন্তর্ভুক্ত থাকতে পারে যেগুলি নেস্ট করা সত্তা যেমন line_item/unit_price
এবং line_item/description
।
এই উদাহরণটি দেখার সুবিধার জন্য নেস্টেড কাঠামোকে সমতল করে।
চালান পার্সার
extraction.py
নামে একটি ফাইল তৈরি করুন এবং নীচের কোডটি ব্যবহার করুন।
আপনার আগে তৈরি করা ইনভয়েস পার্সার প্রসেসরের আইডি দিয়ে INVOICE_PARSER_ID
প্রতিস্থাপন করুন এবং google_invoice.pdf
ফাইলটি ব্যবহার করুন
extraction.py
import pandas as pd
from google.cloud import documentai_v1 as documentai
def online_process(
project_id: str,
location: str,
processor_id: str,
file_path: str,
mime_type: str,
) -> documentai.Document:
"""
Processes a document using the Document AI Online Processing API.
"""
opts = {"api_endpoint": f"{location}-documentai.googleapis.com"}
# Instantiates a client
documentai_client = documentai.DocumentProcessorServiceClient(client_options=opts)
# 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
resource_name = documentai_client.processor_path(project_id, location, processor_id)
# Read the file into memory
with open(file_path, "rb") as file:
file_content = file.read()
# Load Binary Data into Document AI RawDocument Object
raw_document = documentai.RawDocument(content=file_content, mime_type=mime_type)
# Configure the process request
request = documentai.ProcessRequest(name=resource_name, raw_document=raw_document)
# Use the Document AI client to process the sample form
result = documentai_client.process_document(request=request)
return result.document
PROJECT_ID = "YOUR_PROJECT_ID"
LOCATION = "YOUR_PROJECT_LOCATION" # Format is 'us' or 'eu'
PROCESSOR_ID = "INVOICE_PARSER_ID" # Create processor in Cloud Console
# The local file in your current working directory
FILE_PATH = "google_invoice.pdf"
# Refer to https://cloud.google.com/document-ai/docs/processors-list
# for supported file types
MIME_TYPE = "application/pdf"
document = online_process(
project_id=PROJECT_ID,
location=LOCATION,
processor_id=PROCESSOR_ID,
file_path=FILE_PATH,
mime_type=MIME_TYPE,
)
types = []
raw_values = []
normalized_values = []
confidence = []
# Grab each key/value pair and their corresponding confidence scores.
for entity in document.entities:
types.append(entity.type_)
raw_values.append(entity.mention_text)
normalized_values.append(entity.normalized_value.text)
confidence.append(f"{entity.confidence:.0%}")
# Get Properties (Sub-Entities) with confidence scores
for prop in entity.properties:
types.append(prop.type_)
raw_values.append(prop.mention_text)
normalized_values.append(prop.normalized_value.text)
confidence.append(f"{prop.confidence:.0%}")
# Create a Pandas Dataframe to print the values in tabular format.
df = pd.DataFrame(
{
"Type": types,
"Raw Value": raw_values,
"Normalized Value": normalized_values,
"Confidence": confidence,
}
)
print(df)
আপনার আউটপুট এই মত কিছু দেখতে হবে:
$ python3 extraction.py Type Raw Value Normalized Value Confidence 0 vat $1,767.97 100% 1 vat/tax_amount $1,767.97 1767.97 USD 0% 2 invoice_date Sep 24, 2019 2019-09-24 99% 3 due_date Sep 30, 2019 2019-09-30 99% 4 total_amount 19,647.68 19647.68 97% 5 total_tax_amount $1,767.97 1767.97 USD 92% 6 net_amount 22,379.39 22379.39 91% 7 receiver_name Jane Smith, 83% 8 invoice_id 23413561D 67% 9 receiver_address 1600 Amphitheatre Pkway\nMountain View, CA 94043 66% 10 freight_amount $199.99 199.99 USD 56% 11 currency $ USD 53% 12 supplier_name John Smith 19% 13 purchase_order 23413561D 1% 14 receiver_tax_id 23413561D 0% 15 supplier_iban 23413561D 0% 16 line_item 9.99 12 12 ft HDMI cable 119.88 100% 17 line_item/unit_price 9.99 9.99 90% 18 line_item/quantity 12 12 77% 19 line_item/description 12 ft HDMI cable 39% 20 line_item/amount 119.88 119.88 92% 21 line_item 12 399.99 27" Computer Monitor 4,799.88 100% 22 line_item/quantity 12 12 80% 23 line_item/unit_price 399.99 399.99 91% 24 line_item/description 27" Computer Monitor 15% 25 line_item/amount 4,799.88 4799.88 94% 26 line_item Ergonomic Keyboard 12 59.99 719.88 100% 27 line_item/description Ergonomic Keyboard 32% 28 line_item/quantity 12 12 76% 29 line_item/unit_price 59.99 59.99 92% 30 line_item/amount 719.88 719.88 94% 31 line_item Optical mouse 12 19.99 239.88 100% 32 line_item/description Optical mouse 26% 33 line_item/quantity 12 12 78% 34 line_item/unit_price 19.99 19.99 91% 35 line_item/amount 239.88 239.88 94% 36 line_item Laptop 12 1,299.99 15,599.88 100% 37 line_item/description Laptop 83% 38 line_item/quantity 12 12 76% 39 line_item/unit_price 1,299.99 1299.99 90% 40 line_item/amount 15,599.88 15599.88 94% 41 line_item Misc processing fees 899.99 899.99 1 100% 42 line_item/description Misc processing fees 22% 43 line_item/unit_price 899.99 899.99 91% 44 line_item/amount 899.99 899.99 94% 45 line_item/quantity 1 1 63%
7. ঐচ্ছিক: অন্যান্য বিশেষায়িত প্রসেসর ব্যবহার করে দেখুন
আপনি ডকুমেন্ট শ্রেণীবদ্ধ করতে এবং একটি চালান পার্স করতে প্রকিউরমেন্টের জন্য ডকুমেন্ট এআই সফলভাবে ব্যবহার করেছেন। ডকুমেন্ট এআই এখানে তালিকাভুক্ত অন্যান্য বিশেষায়িত সমাধানগুলিকেও সমর্থন করে:
আপনি একই পদ্ধতি অনুসরণ করতে পারেন এবং যেকোনো বিশেষায়িত প্রসেসর পরিচালনা করতে একই কোড ব্যবহার করতে পারেন।
আপনি যদি অন্যান্য বিশেষ সমাধানগুলি ব্যবহার করে দেখতে চান তবে আপনি অন্যান্য প্রসেসরের ধরন এবং বিশেষ নমুনা নথিগুলির সাথে ল্যাবটি পুনরায় চালাতে পারেন৷
নমুনা নথি
এখানে কিছু নমুনা নথি রয়েছে যা আপনি অন্যান্য বিশেষায়িত প্রসেসর ব্যবহার করে দেখতে পারেন।
সমাধান | প্রসেসরের ধরন | দলিল |
পরিচয় | ||
ঋণদান | ||
ঋণদান | ||
চুক্তি |
আপনি ডকুমেন্টেশনে অন্যান্য নমুনা নথি এবং প্রসেসর আউটপুট খুঁজে পেতে পারেন।
8. অভিনন্দন
অভিনন্দন, আপনি সফলভাবে ডকুমেন্ট এআই ব্যবহার করেছেন বিশেষায়িত নথি থেকে ডেটা শ্রেণীবদ্ধ করতে এবং বের করতে। আমরা আপনাকে অন্যান্য বিশেষায়িত নথি প্রকারের সাথে পরীক্ষা করার জন্য উত্সাহিত করি।
ক্লিনআপ
এই টিউটোরিয়ালে ব্যবহৃত সংস্থানগুলির জন্য আপনার Google ক্লাউড অ্যাকাউন্টে চার্জ এড়াতে:
- ক্লাউড কনসোলে, সম্পদ পরিচালনা পৃষ্ঠাতে যান।
- প্রকল্প তালিকায়, আপনার প্রকল্প নির্বাচন করুন তারপর মুছুন ক্লিক করুন.
- ডায়ালগে, প্রকল্প আইডি টাইপ করুন এবং তারপরে প্রকল্পটি মুছে ফেলতে শাট ডাউন ক্লিক করুন।
আরও জানুন
এই ফলো-আপ কোডল্যাবগুলির সাথে ডকুমেন্ট এআই সম্পর্কে শেখা চালিয়ে যান।
- পাইথনের সাথে ডকুমেন্ট এআই প্রসেসর পরিচালনা করা
- নথি এআই: লুপে মানব
- নথি এআই ওয়ার্কবেঞ্চ: প্রশিক্ষণ
- ডকুমেন্ট এআই ওয়ার্কবেঞ্চ: কাস্টম প্রসেসর
সম্পদ
- নথির ভবিষ্যত - YouTube প্লেলিস্ট
- ডকুমেন্ট এআই ডকুমেন্টেশন
- নথি এআই পাইথন ক্লায়েন্ট লাইব্রেরি
- নথি AI নমুনা
লাইসেন্স
এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন 2.0 জেনেরিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।