IPhone: כיצד להשתמש בתכונות זיהוי טקסט של iOS

ל-Vision ב-iOS 11 יש את כל מה שאתה צריך כדי ליצור אפליקציה שיכולה לזהות תווי טקסט כשהיישום מתרחש בו זמנית. אתה לא צריך ידע בקידוד טכני - הניווט בתכונה הוא די פשוט. יתרה מכך, היישום הוא חלק.

מסגרת חזון

מסגרת החזון מאפשרת לך ליישם בקלות כל משימה הכרוכה בפרטי מחשב. המבנה מבצע זיהוי נקודות ציון פנים ופנים, זיהוי ברקוד, רישום תמונה, מעקב אחר תכונות כלליות וזיהוי טקסט. Vision גם מאפשר לך להשתמש במודלים מותאמים אישית של Core ML עבור משימות כמו סיווג או זיהוי אובייקטים.

VN DetectTextRectanglesRequest

ה VN DetectTextRectanglesRequest היא בקשה לניתוח תמונה שמוצאת אזורים של טקסט גלוי בתמונה; התכונה מחזירה תווי טקסט כתיבה תוחמת מלבנית עם מקור וגודל.

אם אתה רגיל להשתמש בסוויפט ומתכנת כבר זמן מה, אז אתה בטח תוהה מה השימוש ב-Vision כשיש תכונות אחרות כמו תמונה ו-AVFoundation. ובכן, Vision הוא מדויק יותר וישיר יותר. התכונה זמינה גם במגוון פלטפורמות. עם זאת, השימוש ב-Vision עשוי לדרוש יותר כוח עיבוד וזמן עיבוד.

כדי להשתמש ב-Vision לזיהוי טקסט, תזדקק ל-Xcode 9 ומכשיר המריץ את iOS 11.

יצירת מצלמה עם Avcapture

ראשית, אתה צריך ליצור מצלמה עם 

AVCapture; זאת על ידי אתחול AVcapturesession של אובייקט אחד לביצוע לכידה בזמן אמת או לא מקוון. לאחר מכן, בצע את הפגישה לחיבור המכשיר.

כדי לחסוך לך זמן מבניית ממשק המשתמש של האפליקציה שלך, שקול לקיים פרויקט מתחיל, מלכתחילה, זה ייתן לך זמן להתמקד בלימוד מסגרת ה-Vision.

  1. פתח את פרויקט ההתחלה שלך. התצוגות בלוח התכנון אמורות להיות מוכנות ומוכנות עבורך.
  2. על ViewController.swift, חפש את קטע הקוד עם פונקציות ושקעים.
  3. מתחת לשקע-ImageView, דלהכריז על מושב עבור AVcapturesession - זה משמש בכל פעם שאתה רוצה שפעולות יבוצעו על סמך שידור חי.
  4. הגדר את AVcapturesession וה AVmediatype לווידאו מכיוון שתבצע את צילום המצלמה כדי לאפשר לה לפעול ברציפות
  5. הגדר את התקן הפלט והקלט
  6. הקלט הוא מה שהמצלמה תראה, והפלט הוא הסרטון בפורמט מוגדר של KCVPixelFormatType_32GRA.
  7. לבסוף, הוסף א תַת שִׁכבָה שמכיל סרטונים ל imageView ולהתחיל את הפגישה. הפונקציה ידועה בשם inViewdidload. אתה גם צריך להגדיר את המסגרת של השכבה.

התקשר לפונקציה ב- viewWillAppear שיטה.

מכיוון שהגבולות עדיין לא נקבעו סופית, בטל את viewDidLayoutSubviews ( ) שיטה לעדכון השכבות הכרוכות.

לאחר שחרורו של iOS 10, יש צורך ברשומה נוספת ב-Info.plist, זה מספק סיבה לשימוש במצלמה. עליך להגדיר גם תיאור שימוש במצלמה פרטיות.

זיהוי טקסט; כיצד פועלת מסגרת החזון

ישנם שלושה שלבים ליישום Vision באפליקציה.

  1. מטפלים - זה כאשר אתה רוצה שהמסגרת תעשה משהו לאחר קריאת הבקשה.
  2. תצפיות - זה מה שאתה רוצה לעשות עם הנתונים שסופקו על ידך החל בבקשה אחת
  3. בקשות - זה כאשר אתה מבקש את Detect framework

באופן אידיאלי, אתה יוצר בקשת טקסט אחת בתור VNdetecttextrectanglesrequest. זה סוג של VNrequest שגובל סביב הטקסט. לאחר שהמסגרת משלימה את הבקשה, אתה ממשיך להתקשר ל- דטקסטhandler פוּנקצִיָה. אתה גם רוצה לדעת את המסגרת המדויקת שזוהתה, הגדר אותה ל תיבות תווים של דיווח=נכון.

לאחר מכן, הגדר את התצפיות המכילות את כל התוצאות של VNdetecttextrectanglesrequest, זכור להוסיף Vision למצלמת הפלט. מכיוון ש-Vision חושף ממשקי API ברמה גבוהה, העבודה איתה מאובטחת.

הפונקציה בודקת אם ה Cmsamplebuffer קיים ו- PutOut Avcaptureoutput. לאחר מכן עליך להמשיך ליצירת משתנה אחד בקשות כסוג מילון אחד VNimageoption. ה VNmage אפשרות היא סוג של מבנה המכיל מאפיינים ונתונים מהמצלמה. לאחר מכן עליך ליצור את VNimagerequesthandler ובצע את בקשת הטקסט.

ציור גבולות מסביב לטקסט שזוהה

אתה יכול להתחיל בכך שהמסגרת תצייר שתי תיבות, אחת לכל אות שהיא מזהה והשנייה לכל מילה. טבלאות הן השילוב של כל תיבות התווים שהבקשה שלך תמצא.

  • הגדר את הנקודות בתצוגה שלך כדי לעזור לך למקם את התיבות.
  • לאחר מכן, צור א CALayeר; להשתמש VNrectangleobservation כדי להגדיר את האילוצים שלך, מה שהופך את תהליך התוויה של התיבה לקל יותר.

כעת יש לך את כל הפונקציות שלך.

כדי לחבר את הנקודות שלך, התחל בכך שהקוד שלך יפעל באופן אסינכרוני. לאחר מכן עליך לבדוק אם קיים אזור בתוך התוצאות שלך VNTextObservation.

כעת תוכל להתקשר לפונקציה שלך, שתצייר תיבה בתוך השטח. בדוק אם יש תיבות תווים בתוך האזור ואז התקשר לשירות שמביא תיבה סביב כל אות.

לאחר מכן, צור משתנה RequestOptions. כעת אתה יכול ליצור א VNImageRequestHandler אובייקט ובצע את בקשת הטקסט שיצרת.

לבסוף, השלב האחרון הוא הפעלת קוד החזון שלך עם הזרם החי. תצטרך לקחת את פלט הווידאו ולהמיר אותו ל Cmsamplebuffer.

טיפים נוספים

  1. נסה תמיד לחתוך את התמונה ולעבד רק את הקטע שאתה צריך. זה יקטין את זמן העיבוד ואת טביעת הרגל של הזיכרון
  2. הפעל את תיקון השפה כאשר אתה מתמודד עם תווים לא מספריים ואז כבה אותו כאשר אתה עוסק בתו מספרי
  3. כלול אימות עבור מחרוזות מספרים מזוהות כדי לאשר את הדיוק ולמנוע הצגת ערך שגוי למשתמש.
  4. בקר מצלמת המסמכים הוא המלווה הטוב ביותר לזיהוי טקסט מאחר ואיכות התמונה משחקת תפקיד משמעותי בזיהוי טקסט.
  5. שקול להגדיר גובה טקסט מינימלי כדי להגביר את הביצועים.

עם Vision, יש לך את כל מה שאתה צריך לזיהוי טקסט. מכיוון ש-Vision קל לשימוש ולוקח זמן קצר ליישום, השימוש בו כמעט שווה ערך למשחק בלגו. נסה לבדוק את האפליקציה שלך על אובייקטים, גופנים, תאורה וגדלים שונים. אתה יכול גם להרשים את עצמך על ידי שילוב של Vision עם Core ML.