קהל
המדריך הזה נועד לעזור לכם לפתח אפליקציות באמצעות Google Cloud Vision API Document Text Detection. ההנחה היא שיש לכם היכרות עם מבנים וטכניקות תכנות בסיסיים, אבל גם אם אתם מתחילים בתכנות, תוכלו לעקוב אחרי המדריך הזה ולהריץ אותו בלי קושי, ואז להשתמש במסמכי העיון של Vision API כדי ליצור אפליקציות בסיסיות.
דרישות מוקדמות
- מגדירים פרויקט Vision API במסוף Google Cloud .
מגדירים את הסביבה לשימוש ב-Application Default Credentials.
Python
- מתקינים את Python.
- מתקינים את pip.
- מתקינים את ספריית הלקוח של Google Cloud ואת Python Imaging Library.
הוספת הערות לתמונה באמצעות OCR של טקסט במסמך
במדריך הזה מוסבר איך ליצור אפליקציה בסיסית של Cloud Vision API ששולחת DOCUMENT_TEXT_DETECTION בקשה ומעבדת את fullTextAnnotation
התגובה.
fullTextAnnotation היא תשובה היררכית מובנית לטקסט UTF-8
שחולץ מהתמונה, מאורגנת כדפים ← בלוקים ← פסקאות ← מילים ← סמלים:
Pageהוא אוסף של בלוקים, בתוספת מידע על הדף: גדלים, רזולוציות (רזולוציית X ורזולוציית Y עשויות להיות שונות).
Blockמייצג רכיב "לוגי" אחד בדף – לדוגמה, אזור שמכוסה בטקסט, תמונה או קו הפרדה בין עמודות. בלוקים של טקסט וטבלה מכילים את המידע העיקרי שנדרש לחילוץ הטקסט.
Paragraphהיא יחידה מבנית של טקסט שמייצגת רצף מסודר של מילים. כברירת מחדל, המילים נחשבות מופרדות על ידי מעברי מילים.
Wordהיא יחידת הטקסט הקטנה ביותר. הוא מיוצג כמערך של סמלים.
Symbolמייצג תו או סימן פיסוק.
בנוסף, fullTextAnnotation יכול לספק כתובות URL לתמונות באינטרנט שתואמות באופן חלקי או מלא לתמונה שבבקשה.
רשימת קוד מלאה
במהלך קריאת הקוד, מומלץ לעיין בהפניה ל-Vision API Python.
האפליקציה הזו מבצעת את המשימות הבאות:
- מייבא את הספריות שנדרשות להפעלת האפליקציה
- הפונקציה מקבלת שלושה ארגומנטים ומעבירה אותם לפונקציה
main():-
image_file– קובץ תמונת הקלט שיוצגו בו הערות -
output_file– שם קובץ הפלט שאליו Cloud Vision ייצור תמונת פלט עם תיבות פוליגון מצוירות
-
- יצירת מופע של
ImageAnnotatorClientכדי ליצור אינטראקציה עם השירות - שולח את הבקשה ומחזיר תגובה
- יוצר תמונת פלט עם תיבות שמצוירות מסביב לטקסט
מבט מקרוב על הקוד
בקטעים הבאים נבחן בפירוט את הרכיבים העיקריים של האפליקציה לדוגמה.
ייבוא ספריות
אנחנו מייבאים ספריות רגילות:
-
argparseכדי לאפשר לאפליקציה לקבל שמות של קובצי קלט כארגומנטים -
enumלערך הספירהFeatureType -
ioFile I/O
ייבוא אחר:
- הסיווג
ImageAnnotatorClientבספרייהgoogle.cloud.visionלגישה אל Cloud Vision API. - מודול
typesבספרייהgoogle.cloud.visionליצירת בקשות. - הספריות
Imageו-ImageDrawמהספרייהPILמשמשות ליצירת תמונת הפלט עם תיבות שמצוירות על תמונת הקלט.
הפעלת האפליקציה
בדוגמה הזו, אנחנו מנתחים את הארגומנטים שהועברו ומעבירים אותם לפונקציה render_doc_text().
אימות ל-API
לפני שמתקשרים עם שירות Cloud Vision API, צריך לאמת את השירות באמצעות פרטי כניסה שהושגו קודם. הדרך הכי פשוטה לקבל פרטי כניסה באפליקציה היא באמצעות Application Default Credentials (ADC). כברירת מחדל, ספריות הלקוח ב-Cloud ינסו לקבל פרטי כניסה ממשתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS, שצריך להיות מוגדר כך שיצביע על קובץ מפתח ה-JSON של חשבון השירות (מידע נוסף זמין במאמר בנושא הגדרת חשבון שירות).
שליחת בקשת ה-API וקריאת גבולות הטקסט מהתגובה
עכשיו, אחרי שהשירות Cloud Vision API מוכן, אפשר לגשת לשירות על ידי קריאה לשיטה document_text_detection של מופע ImageAnnotatorClient.
ספריית הלקוח כוללת את הפרטים של הבקשות והתגובות ל-API. מידע מלא על מבנה הבקשה מופיע בCloud Vision API Reference.
אחרי שספריית הלקוח תטפל בבקשה, התשובה שלנו תכיל AnnotateImageResponse, שמורכב מרשימה של תוצאות Image Annotation, אחת לכל תמונה שנשלחה בבקשה. מכיוון ששלחנו רק תמונה אחת בבקשה, נסביר על ה-TextAnnotation המלא ונאסוף את הגבולות של התכונה שצוינה במסמך.
הפעלת האפליקציה
כדי להפעיל את האפליקציה, אפשר להוריד את הקובץ receipt.jpg הזה (יכול להיות שתצטרכו ללחוץ לחיצה ימנית על הקישור), ואז להעביר את המיקום שבו הורדתם את הקובץ במחשב המקומי לאפליקציית ההדרכה (doctext.py).

הנה פקודת Python, ואחריה תמונות הפלט של Text Annotation.
$ python doctext.py receipt.jpg -out_file out.jpg
בתמונה הבאה מוצגות מילים בתיבות צהובות ומשפטים באדום.

כל הכבוד! ביצעת זיהוי טקסט באמצעות הערות טקסט מלאות של Cloud Vision.