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