זיהוי תווים אופטיים (OCR)
באמצעות Cloud Vision API, אתם יכולים להשתמש ביכולות של זיהוי תווים אופטי (OCR) כדי לזהות טקסט בתמונות. כלומר, אתם יכולים להשתמש ב-Cloud Vision למשימות של ראייה ממוחשבת, כמו ניתוח תמונות וזיהוי טקסט במסמכים צפופים, כולל חילוץ כתב יד.
Cloud Vision API מספק שתי תכונות של הערות שתומכות בזיהוי תווים אופטי (OCR):
TEXT_DETECTIONמזהה ומחלץ טקסט מכל תמונה. לדוגמה, תמונה יכולה להכיל שלט רחוב או תמרור. קובץ ה-JSON כולל את המחרוזת המלאה שחולצה, וגם מילים בודדות, והתיבות התוחמות שלהן.
DOCUMENT_TEXT_DETECTIONגם מחלץ טקסט מתמונה, אבל התשובה מותאמת לטקסט צפוף ולמסמכים. קובץ ה-JSON כולל מידע על הדף, הבלוק, הפסקה, המילה והמעבר לשורה חדשה.
DOCUMENT_TEXT_DETECTIONמידע נוסף על חילוץ כתב יד וחילוץ טקסט מקבצים (PDF או TIFF)
נסו בעצמכם
אנחנו ממליצים למשתמשים חדשים ב-Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של Cloud Vision בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300 $להרצה, לבדיקה ולפריסה של עומסי העבודה.
להתנסות ב-Cloud Vision בחינםבקשות לזיהוי טקסט
הגדרת הפרויקט והאימות ב- Google Cloud
זיהוי טקסט בתמונה מקומית
אתם יכולים להשתמש ב-Vision API כדי לבצע זיהוי תכונות בקובץ תמונה מקומי.
בבקשות REST, שולחים את תוכן קובץ התמונה כמחרוזת בקידוד base64 בגוף הבקשה.
בבקשות של gcloud וספריות לקוח, מציינים את הנתיב לתמונה מקומית בבקשה.
gcloud
כדי לבצע זיהוי טקסט, משתמשים בפקודה gcloud ml vision
detect-text:
gcloud ml vision detect-text ./path/to/local/file.jpg
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- BASE64_ENCODED_IMAGE: ייצוג base64 (מחרוזת ASCII) של נתוני התמונה הבינאריים. המחרוזת הזו צריכה להיראות כמו המחרוזת הבאה:
/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
ה-method של ה-HTTP וכתובת ה-URL:
POST https://vision.googleapis.com/v1/images:annotate
גוף בקשת JSON:
{
"requests": [
{
"image": {
"content": "BASE64_ENCODED_IMAGE"
},
"features": [
{
"type": "TEXT_DETECTION"
}
]
}
]
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://vision.googleapis.com/v1/images:annotate"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_ID" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://vision.googleapis.com/v1/images:annotate" | Select-Object -Expand Content
אם הבקשה מצליחה, השרת מחזיר קוד סטטוס 200 OK של HTTP ואת התשובה בפורמט JSON.
תשובה של TEXT_DETECTION כוללת את הביטוי שזוהה, תיבת התוחמת שלו, מילים בודדות ותיבות התוחמות שלהן.
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך לתחילת העבודה עם Vision באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של Vision Go API.
כדי לבצע אימות ב-Vision, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במאמר התחלת העבודה עם Vision API באמצעות ספריות לקוח. מידע נוסף מופיע ב מאמרי העזרה של Vision API Java.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsהוראות ההגדרה שבמדריך לתחילת העבודה עם Vision באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של Vision Node.js API.
כדי לבצע אימות ב-Vision, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך לתחילת העבודה עם Vision באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של Vision Python API.
כדי לבצע אימות ב-Vision, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
שפות נוספות
C#: צריך לפעול לפי הוראות ההגדרה של C# בדף של ספריות הלקוח ואז לעבור אל מאמרי העזרה של Vision בנושא .NET.
PHP: פועלים לפי הוראות ההגדרה של PHP בדף של ספריות הלקוח ואז עוברים אל מסמכי העזר של Vision ל-PHP.
Ruby: פועלים לפי הוראות ההגדרה של Ruby בדף ספריות הלקוח, ואז עוברים אל מאמרי העזרה של Vision ל-Ruby.
זיהוי טקסט בתמונה מרוחקת
אתם יכולים להשתמש ב-Vision API כדי לבצע זיהוי תכונות בקובץ תמונה מרוחק שנמצא ב-Cloud Storage או באינטרנט. כדי לשלוח בקשה לקובץ מרוחק, צריך לציין את כתובת ה-URL או את ה-URI של Cloud Storage של הקובץ בגוף הבקשה.
gcloud
כדי לבצע זיהוי טקסט, משתמשים בפקודה gcloud ml vision
detect-text:
gcloud ml vision detect-text gs://cloud-samples-data/vision/ocr/sign.jpg
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- CLOUD_STORAGE_IMAGE_URI: הנתיב לקובץ תמונה תקין בקטגוריה של Cloud Storage. צריכות להיות לכם לפחות הרשאות קריאה לקובץ.
לדוגמה:
gs://cloud-samples-data/vision/ocr/sign.jpg
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
ה-method של ה-HTTP וכתובת ה-URL:
POST https://vision.googleapis.com/v1/images:annotate
גוף בקשת JSON:
{
"requests": [
{
"image": {
"source": {
"imageUri": "CLOUD_STORAGE_IMAGE_URI"
}
},
"features": [
{
"type": "TEXT_DETECTION"
}
]
}
]
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://vision.googleapis.com/v1/images:annotate"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_ID" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://vision.googleapis.com/v1/images:annotate" | Select-Object -Expand Content
אם הבקשה מצליחה, השרת מחזיר קוד סטטוס 200 OK של HTTP ואת התשובה בפורמט JSON.
תשובה של TEXT_DETECTION כוללת את הביטוי שזוהה, תיבת התוחמת שלו, מילים בודדות ותיבות התוחמות שלהן.
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך לתחילת העבודה עם Vision באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Vision Go API.
כדי לבצע אימות ב-Vision, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במדריך למתחילים של Vision API באמצעות ספריות לקוח. מידע נוסף מופיע ב מאמרי העזרה של Vision API Java.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsהוראות ההגדרה שבמדריך לתחילת העבודה עם Vision באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Vision Node.js API.
כדי לבצע אימות ב-Vision, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך לתחילת העבודה עם Vision באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של Vision Python API.
כדי לבצע אימות ב-Vision, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
שפות נוספות
C#: צריך לפעול לפי הוראות ההגדרה של C# בדף של ספריות הלקוח ואז לעבור אל מאמרי העזרה של Vision בנושא .NET.
PHP: פועלים לפי הוראות ההגדרה של PHP בדף של ספריות הלקוח ואז עוברים אל מסמכי העזר של Vision ל-PHP.
Ruby: פועלים לפי הוראות ההגדרה של Ruby בדף ספריות הלקוח, ואז עוברים אל מאמרי העזרה של Vision ל-Ruby.
מציינים את השפה לזיהוי טקסט ב-OCR (אופציונלי)
שני סוגי הבקשות ל-OCR תומכים בשפה אחת או יותר (languageHints) שמציינות את שפת הטקסט בתמונה. עם זאת, בדרך כלל התוצאות הכי טובות מתקבלות כשמשאירים את הערך ריק, כי השמטת הערך מאפשרת זיהוי שפה אוטומטי. בשפות שמבוססות על האלפבית הלטיני, אין צורך להגדיר את languageHints. במקרים נדירים, כשהשפה של הטקסט בתמונה ידועה, הגדרת רמז עוזרת לקבל תוצאות טובות יותר (אם כי היא יכולה להפריע באופן משמעותי אם הרמז שגוי). זיהוי הטקסט מחזיר שגיאה אם אחת או יותר מהשפות שצוינו לא נכללות בשפות הנתמכות.
אם בוחרים לספק רמז לגבי השפה, צריך לשנות את תוכן הבקשה (קובץ request.json) כדי לספק את המחרוזת של אחת מהשפות הנתמכות בשדה imageContext.languageHints, כמו בדוגמה הבאה:
{ "requests": [ { "image": { "source": { "imageUri": "IMAGE_URL" } }, "features": [ { "type": "DOCUMENT_TEXT_DETECTION" } ], "imageContext": { "languageHints": ["en-t-i0-handwrit"] } } ] }
תמיכה בכמה אזורים ב-Vision API OCR
עכשיו אפשר לציין אחסון נתונים ועיבוד OCR ברמת היבשת. נכון לעכשיו, האזורים הבאים נתמכים:
-
us: ארה"ב בלבד -
eu: האיחוד האירופי
מיקומים
Cloud Vision מאפשר לכם לקבוע איפה המשאבים של הפרויקט יאוחסנו ויעובדו. בפרט, אתם יכולים להגדיר את Cloud Vision כך שיאחסן ויעבד את הנתונים שלכם רק באיחוד האירופי.
כברירת מחדל, Cloud Vision מאחסן ומעבד משאבים במיקום גלובלי, כלומר Cloud Vision לא מבטיח שהמשאבים יישארו במיקום או באזור מסוימים. אם תבחרו במיקום האיחוד האירופי, Google תאחסן את הנתונים שלכם ותעבד אותם רק באיחוד האירופי. אתם והמשתמשים שלכם יכולים לגשת לנתונים מכל מקום.
הגדרת המיקום באמצעות ה-API
Vision API תומך בנקודת קצה גלובלית של API (vision.googleapis.com) וגם בשתי נקודות קצה שמבוססות על אזורים: נקודת קצה של האיחוד האירופי (eu-vision.googleapis.com) ונקודת קצה של ארצות הברית (us-vision.googleapis.com). כדאי להשתמש בנקודות הקצה האלה לעיבוד נתונים שספציפיים לאזור. לדוגמה, כדי לאחסן ולעבד את הנתונים רק באיחוד האירופי, צריך להשתמש ב-URI eu-vision.googleapis.com במקום ב-vision.googleapis.com בקריאות ל-API בארכיטקטורת REST:
- https://eu-vision.googleapis.com/v1/projects/PROJECT_ID/locations/eu/images:annotate
- https://eu-vision.googleapis.com/v1/projects/PROJECT_ID/locations/eu/images:asyncBatchAnnotate
- https://eu-vision.googleapis.com/v1/projects/PROJECT_ID/locations/eu/files:annotate
- https://eu-vision.googleapis.com/v1/projects/PROJECT_ID/locations/eu/files:asyncBatchAnnotate
כדי לאחסן ולעבד את הנתונים רק בארצות הברית, צריך להשתמש בנקודת הקצה של ארה"ב (us-vision.googleapis.com) עם השיטות הקודמות.
הגדרת המיקום באמצעות ספריות הלקוח
כברירת מחדל, ספריות הלקוח של Vision API ניגשות לנקודת הקצה הגלובלית של ה-API (vision.googleapis.com). כדי לאחסן ולעבד את הנתונים רק באיחוד האירופי, צריך להגדיר במפורש את נקודת הקצה (eu-vision.googleapis.com). דוגמאות הקוד הבאות מראות איך לקבוע את ההגדרה הזו.
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- REGION_ID: אחד ממזהי המיקום האזוריים התקפים:
-
us: ארה"ב בלבד -
eu: האיחוד האירופי
-
- CLOUD_STORAGE_IMAGE_URI: הנתיב לקובץ תמונה תקין בקטגוריה של Cloud Storage. צריכות להיות לכם לפחות הרשאות קריאה בקובץ.
דוגמה:
gs://cloud-samples-data/vision/ocr/sign.jpg
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
ה-method של ה-HTTP וכתובת ה-URL:
POST https://REGION_ID-vision.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_ID/images:annotate
גוף בקשת JSON:
{
"requests": [
{
"image": {
"source": {
"imageUri": "CLOUD_STORAGE_IMAGE_URI"
}
},
"features": [
{
"type": "TEXT_DETECTION"
}
]
}
]
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://REGION_ID-vision.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_ID/images:annotate"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_ID" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://REGION_ID-vision.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_ID/images:annotate" | Select-Object -Expand Content
אם הבקשה מצליחה, השרת מחזיר קוד סטטוס 200 OK של HTTP ואת התשובה בפורמט JSON.
תשובה של TEXT_DETECTION כוללת את הביטוי שזוהה, תיבת התוחמת שלו, מילים בודדות ותיבות התוחמות שלהן.
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך לתחילת העבודה עם Vision באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Vision Go API.
כדי לבצע אימות ב-Vision, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במדריך למתחילים של Vision API באמצעות ספריות לקוח. מידע נוסף מופיע ב מאמרי העזרה של Vision API Java.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js במדריך למתחילים של Vision באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Vision Node.js API.
כדי לבצע אימות ב-Vision, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך לתחילת העבודה עם Vision באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Vision Python API.
כדי לבצע אימות ב-Vision, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
התנסות בתכונה באמצעות Google APIs Explorer
אפשר לנסות זיהוי טקסט וזיהוי טקסט במסמך באמצעות Google APIs Explorer. כדי להשתמש בתמונה שסופקה (gs://cloud-samples-data/vision/ocr/sign.jpg), לוחצים על Execute. אפשר גם לציין תמונה משלכם במקום זאת.
כדי לנסות זיהוי טקסט במסמך, מעדכנים את הערך של type ל-DOCUMENT_TEXT_DETECTION.

גוף הבקשה:
{
"requests": [
{
"features": [
{
"type": "TEXT_DETECTION"
}
],
"image": {
"source": {
"imageUri": "gs://cloud-samples-data/vision/ocr/sign.jpg"
}
}
}
]
}פותחים את Google APIs Explorer ושולחים את הבקשה
כדי לפתוח את Google APIs Explorer, לוחצים על Try it!.
זה שינוי אופציונלי. משנים את גוף הבקשה הקיים.
כדי לשלוח את הבקשה, לוחצים על Execute (ביצוע).