קבלת משוב על כתובות בהודו

האתגר: הבנת איכות הכתובות בהודו

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

  • קודי אימות חסרים או שגויים: קודי אימות חיוניים לניתוב יעיל של דואר וחבילות, אבל לעיתים קרובות הם לא מדויקים או חסרים.
  • שגיאות איות: שגיאות נפוצות בשמות של יישובים, ערים או מדינות עלולות להוביל לפרשנות שגויה.
  • סדר לא סטנדרטי של רכיבים: הרצף של רכיבי הכתובת (כמו מספר בית, רחוב, יישוב, עיר) יכול להשתנות מאוד, ולכן קשה לבצע עיבוד אוטומטי.
  • חוסר סטנדרטיזציה: מונחים לא רשמיים, קיצורים והפניות תיאוריות (למשל, 'ליד המקדש הישן') הם נפוצים אבל לא מובנים על ידי מערכות סטנדרטיות.
  • הכללה של מידע יחסי: מונחים כמו S/o (בן של), D/o (בת של) או C/o (בטיפול של) מוטמעים לעיתים קרובות בכתובת, ומוסיפים נתונים שאינם קשורים למיקום.
  • וריאציות בסימון של יחידות משנה: רכיבים כמו מספרי יחידות, מספרי בתים או מספרי מגרשים (למשל, '2/1') נכתבים בדרכים רבות, כמו '2/1',‏ '2-1',‏ '2 by 1' או 'No 2, 1st part', ולכן קשה לנתח אותם באופן עקבי.
  • שכיחות של פרטים ברמת משנה של כתובת: כתובות רבות, במיוחד באזורים עירוניים, כוללות מידע חיוני ברמת משנה של כתובת, כמו מספרי דירות, מספרי קומה או פרטים על אגף בבניין. הפרטים האלה חיוניים למשלוח עד הבית, אבל לרוב הם לא מובנים.
  • דו-משמעות: לפעמים אפשר לפרש כתובות בכמה דרכים, מה שמוביל לחוסר ודאות באיתור הנקודה המדויקת.

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

הפתרון: משוב על כתובות מבוסס-AI

כדי להתמודד עם האתגרים האלה, אנחנו מציגים פתרון באמצעות AI גנרטיבי.

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

הרעיון המרכזי הוא להשתמש במודלים של Gemini ב-Vertex AI כדי:

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

המערכת מגיעה בשני גורמי צורה: – API בארכיטקטורת REST – ממשק משתמש באינטרנט

איך לקוחות בהודו יכולים להשתמש בכלי הזה

המטרה העיקרית היא לספק משוב על איכות הכתובות, אבל היתרונות לא מסתיימים כאן:

  1. שיפור שיעור המסירה: לעסקים, הבנה של הדרך הטובה ביותר לבנות כתובות יכולה להוביל לפחות ניסיונות מסירה שנכשלו, להפחתת עלויות תפעול ולשיפור שביעות רצון הלקוחות. כדי לקבל את החבילות והדואר בצורה מהימנה יותר, חשוב להשתמש בכתובות בפורמט תקין.
  2. שיפור הנתונים: חברות יכולות להשתמש בתובנות שהן מקבלות מהכלי הזה (או לשלב את ה-API הבסיסי) כדי לנקות את מסדי הנתונים הקיימים של כתובות הלקוחות שלהן ולתקנן אותם. כך הן יכולות לשפר את ניתוח הנתונים ואת השירותים הממוקדים שלהן.
  3. אימות חזותי: תצוגת המפה עם שתי הסיכות שימושית במיוחד. המשתמשים יכולים לראות אם הכתובות המקוריות והמשופרות מצביעות על אותו מיקום או על מיקומים שונים. כך אפשר לזהות אם הגרסה 'המנוקה' משקפת בצורה מדויקת את המיקום המיועד, או אם הקלט המקורי היה מעורפל מדי או שגוי מדי בשביל קידוד גיאוגרפי נכון.

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

מהי האפליקציה הזו?

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

  • הזנת כתובת: אפשר להקליד את הכתובת ישירות או להדביק כמה כתובות לעיבוד בכמות גדולה.
  • קבלת כתובת אחרי ניקוי: האפליקציה מעבדת את הקלט ומספקת גרסה מתוקנת וסטנדרטית על סמך ההבנה של מודל ה-AI.
  • הבנת השינויים: ההדגשה של השינויים הספציפיים שבוצעו בכתובת המקורית מאפשרת שקיפות בתהליך המשוב.
  • הדמיה של ההבדלים: גם הכתובות המקוריות וגם הכתובות אחרי הניקוי מוצגות במפה אינטראקטיבית, וכך המשתמשים יכולים להשוות חזותית בין המיקומים ולזהות במהירות אי-התאמות פוטנציאליות.
  • קבלת רכיבים מפורטים: הכתובת שעברה גיאו-קידוד (ניקוי) מחולקת לחלקים שמרכיבים אותה (כמו מספר רחוב, יישוב, עיר, מיקוד), ומספקת תצוגה מובנית.

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

ארכיטקטורת ה-Backend: מבוססת על Gemini ו-Vertex AI

היכולת של האפליקציה הזו להבין ולשפר כתובות מבוססת על טכנולוגיות AI מתקדמות של Google Cloud:

  • **עיבוד כתובות ליבה: ** המשימה הבסיסית של ניתוח, הבנה, תיקון וסטנדרטיזציה של מחרוזות כתובות מתבצעת על ידי מודל Gemini 2.5 Flash של Google. כששולחים כתובת:
    • אפליקציית הקצה הקדמי שולחת את כתובת הקלט לשירות קצה עורפי.
    • שירות הקצה העורפי הזה מבוסס על Gemini API. מודל Gemini 2.5 Flash מקבל פרומפט מפורט כדי לוודא עיבוד מדויק ותקני. ההוראות העיקריות שניתנות למודל הן:
You are an address cleaning expert. Your task is to take malformed addresses
and output cleaned and standardized versions. All addresses will be from India.

BEGIN:
Follow these instructions:
Remove any mention of "House Number," "H.No," "Door Number," "D.No,"
"Building No", "Flat No." etc. along with the number it's associated with
Remove any "C/O," "S/O," etc.
DO NOT REMOVE any name of building
It should also remove any name of person or actual house numbers etc which
appear after the texts mentioned in the previous point
Ensure there are no duplicate mentions of town names, state names, etc.
If no valid zip code is available, add an error in the Errors field:
"No valid zip code found. Please verify."
Remove mention of any Floors in the address
If there are any mention of "Near or landmark" put that in a new field called
"address_descriptors"
Expand any rd, ln, st and similar other abbreviations to road, lane, street etc.
END:

BEGIN: Structuring the output
Output the cleaned address in a single line.
Output address should put State, Country, Zip code at the end in that order.
If any critical component of the address is missing, mention that in errors section.
**Critically important:** Provide a detailed description of every change made
to the address in the "changes_made" field. Do not omit this field.
IF a House number or unit number was removed add that in a separate field
called "subpremise_details".
Output the errors in the field called "errors". If no errors, provide an empty
array.
Output all responses in JSON format.
END:

הנחיה מובנית כזו עוזרת ל-Gemini 2.5 Flash:

  • לנתח קלט מורכב של כתובות, שלרוב לא מובנה.
  • זיהוי והוצאה של רכיבי כתובת מרכזיים (למשל, מספר בית /דירה, שם בניין, רחוב, רשות מוניציפאלית, אזור משנה, עיר, מדינה (State), מיקוד).
  • תיקון של שגיאות איות נפוצות ושל וריאציות.
  • שינוי הסדר של הרכיבים לפורמט סטנדרטי יותר שמתאים להודו.
  • להסיק או לסמן מידע קריטי חסר, איפה שאפשר.
  • תייצר רשימה של 'השינויים שבוצעו' ושל שגיאות, ותספק שקיפות. היכולת של המודל לפעול לפי ההוראות המפורטות האלה תוך התמודדות עם דפוסי שפה מגוונים ומידע הקשרי היא המפתח ליעילות שלו בפורמטים שונים של כתובות.

  • הצגה ומדרגיות (Cloud Run ב-Vertex AI/Google Cloud): שירות לקצה העורפי שתזמר את הקריאות ל-Gemini API ויחזיר את התוצאות לקצה קדמי בנוי כאפליקציה בקונטיינרים בלי שרת (serverless).

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

איך משתמשים באפליקציה

האפליקציה זמינה בכתובת India address feedback app.

כדי להשתמש בה:

  1. מזינים את הכתובת: מקלידים או מדביקים את הכתובת בהודו בשדה להזנת קלט.
  2. עיבוד הכתובת: לוחצים על הלחצן 'ניקוי הכתובת'.
  3. מעיינים בתוצאות: האפליקציה תציג:
    • הכתובת אחרי הניקוי.
    • מפה שבה מוצגים גם המיקומים המקוריים וגם המיקומים אחרי הניקוי.
    • פירוט של רכיבי הכתובת.
    • רשימת השינויים שבוצעו על ידי ה-AI.
    • כל השגיאות שזוהו.

דוגמה לקריאה ישירה ל-API (למפתחים)

מפתחים או מערכות שרוצים לשלב את הפונקציונליות של עיבוד הכתובות ישירות יכולים לקרוא לשירות לקצה העורפי באופן פרוגרמטי. דוגמה לשימוש ב-cURL:

curl -X POST \
  https://gemini-address-cleaner-480439120941.us-central1.run.app/clean_address \
  -H "Content-Type: application/json" \
  -d '{
    "input_address": "S/O Laum Mirzapur Mirzapur Muzaffarpur Bihar India Mirzapur purani Darbhanga road SELAMBA BIHAR 843103"
  }'

הפקודה הזו שולחת בקשת POST עם מחרוזת הכתובת במטען ייעודי (payload) של JSON, ומחזירה תגובת JSON שמכילה את הכתובת שעברה עיבוד ומידע רלוונטי אחר, בדומה למה שמוצג באפליקציה.
האפליקציה הזו נועדה לפשט את המורכבות של כתובות, ומציעה כלי חשוב לשיפור הדיוק והיעילות, במיוחד בסביבות מגוונות ודינמיות כמו בהודו.