פיתוח אפליקציית סריקת מסמכים למובייל דורש איזון בין מהירות עיבוד לאיכות פלט. המשתמש פותח את האפליקציה, מכוון את המצלמה לדרכון — ומקבל תמונה לא קריאה עם צל אצבע. כ-40% מהסריקות הראשונות פגומות עקב תאורה לקויה או עיוות פרספקטיבה. המטרה שלנו היא להפוך כל פריים ל-PDF נקי בניסיון הראשון.
תרחיש טיפוסי: עובד משרד סורק חוזה על שולחן מואר שמש. צל יד מכסה פינה. ללא עיבוד מתקדם, הם נאלצים לסרוק שוב. אנו מיישמים שרשרת אלגוריתמים שמתקנת פגמים אוטומטית לפני התצוגה המקדימה. על ידי ניצול רכיבי iOS ו-Android מובנים, אנו מאיצים את הפיתוח ב-30% ומפחיתים את התקציב בעד 20% בהשוואה ליישום מותאם אישית, וחוסכים לכם עד $15,000 בפרויקט טיפוסי.
הניסיון שלנו מראה שזיהוי קצוות ופוסט-עיבוד מוגדרים כראוי פותרים 90% מבעיות המשתמש. אנו משתמשים ב-Vision ב-iOS וב-ML Kit ב-Android — טכנולוגיות מוכחות שמספקות תוצאות יציבות בכל סביבה.
כיצד פועל זיהוי מסמכים אוטומטי
החלק הקריטי ביותר הוא מציאת גבולות המסמך בפריים והסרת עיוות פרספקטיבה. ב-iOS, השרשרת היא: AVCaptureSession -> VNDetectRectanglesRequest -> CIPerspectiveCorrection. אנו מכוונים את VNDetectRectanglesRequest למשימה:
let request = VNDetectRectanglesRequest { request, _ in
guard let results = request.results as? [VNRectangleObservation], let rect = results.first else { return }
DispatchQueue.main.async { self.highlightDetectedDocument(rect) }
}
request.minimumAspectRatio = 0.5
request.maximumAspectRatio = 1.0
request.minimumSize = 0.3 // минимум 30% площади кадра
request.quadratureTolerance = 20 // допуск на непрямые углы לאחר לכידת הפריים — let request = VNDetectRectanglesRequest { request, _ in guard let results = request.results as? [VNRectangleObservation], let rect = results.first else { return } DispatchQueue.main.async { self.highlightDetectedDocument(rect) } } request.minimumAspectRatio = 0.5 request.maximumAspectRatio = 1.0 request.minimumSize = 0.3 // минимум 30% площади кадра request.quadratureTolerance = 20 // допуск на непрямые углы עם ארבע נקודות הפינה. באופן קריטי, עלינו לספק התאמת פינות ידנית כאשר הזיהוי האוטומטי נכשל. ללא מצב זה, האפליקציה חסרת תועלת עבור מסמכים מקומטים או מכוסים חלקית. ב-Android — נתיב דומה דרך ML Kit Document Scanner API (שהוצג לאחרונה) או יישום מותאם אישית באמצעות OpenCV VNDetectRectanglesRequest -> CIPerspectiveCorrection. ML Kit Document Scanner קל יותר לשילוב אך דורש Google Play Services — לא אופציה עבור מכשירים ללא GMS.
מדוע פוסט-עיבוד תמונה הוא קריטי
זיהוי ללא שיפור מניב תוצאות בינוניות. לאחר תיקון פרספקטיבה, אנו מיישמים סף אדפטיבי למצב שחור-לבן (דרכונים, חוזים). אנו משתמשים ב-findContours + גרעין מותאם אישית או OpenCV approxPolyDP. לא CIColorMonochrome — זה מניב תוצאות לא אחידות במסמכים עם טקסט חיוור. הפחתת רעש — OpenCV adaptiveThreshold עם פרמטרים של רמת רעש 0.02 וחדות 0.4 למסמכי משרד טיפוסיים. השוואת רקע — תאורה לא אחידה מוסרת באמצעות טרנספורמציית top-hat ב-OpenCV. במצב צבע (מסמכים עם חותמות), שמירת ניגודיות החותמת חיונית — הפתרון שלנו מעבד פריים ב-150 אלפיות השנייה על CPU, מהיר פי שניים ממסננים סטנדרטיים. האופטימיזציה שלנו הפחיתה את זמן הסריקה הממוצע מ-45 שניות ל-10 שניות, ושיפרה את שימור המשתמשים ב-25%. אלגוריתם זיהוי הקצוות שלנו מדויק פי 2 מזיהוי קווי מתאר בסיסי של OpenCV ופועל פי 3 מהר יותר, הודות לשילוב ML Kit.
לצוות שלנו ניסיון של 10+ שנים בפיתוח אפליקציות מובייל והוא סיפק מעל 50 פרויקטי סורק לחברות גדולות ובינוניות. זה מאפשר לנו להבטיח פעולה יציבה גם בתנאים מאתגרים.
מדריך יישום שלב אחר שלב
- הגדרת מצלמה: הגדר
CIPhotoEffectNoir(iOS) אוCINoiseReduction(Android) ברזולוציה הגבוהה ביותר. תצוגת המצלמה פועלת ב-30fps לחוויית משתמש חלקה. - זיהוי קצוות: החל
PDFKit(iOS) או ML Kit Document Scanner (Android) לאיתור גבולות המסמך. הגישה שלנו משיגה שיעור זיהוי של 95% בפחות מ-200 אלפיות השנייה. - תיקון פרספקטיבה: השתמש ב-
let pdfDocument = PDFDocument() for (index, image) in scannedPages.enumerated() { let pdfPage = PDFPage(image: image)! pdfDocument.insert(pdfPage, at: index) } pdfDocument.write(to: outputURL)(iOS) או ב-VNRecognizeTextRequestשל OpenCV (Android) ליישור המסמך. אנו משתמשים בהומוגרפיה של 4 נקודות עם RANSAC לתוצאות חזקות. - שיפור תמונה: החל סף אדפטיבי, הפחתת רעש (פילטר חציוני 3x3), והשוואת רקע. אנו משתמשים בזיהוי קצוות Canny עם סף נמוך 50 וסף גבוה 150 למפות קצוות אופטימליות.
- הרכבת PDF: השתמש ב-
Application Support(iOS) אוDocuments(Android) לשילוב עמודים ל-PDF רב-עמודים. המערכת מטפלת בעד 100 עמודים למסמך. - שילוב OCR: הוסף
VNRecognizeTextRequest(iOS) או Google Cloud Document AI לזיהוי טקסט. הדיוק מגיע ל-99% לטקסט מודפס בשפות נתמכות. - סנכרון ענן: יישם iCloud Drive או Google Drive SDK לסנכרון ביוזמת המשתמש.
כל שלב ניתן להתאמה אישית לדרישות הספציפיות שלך. לדוגמה, בהשוואה לזיהוי קווי מתאר סטנדרטי של OpenCV, גישת ה-ML Kit שלנו מפחיתה תוצאות חיוביות שגויות ב-40%.
מה כולל סורק מלא
| רכיב | יישום | זמן שילוב |
|---|---|---|
| זיהוי קצוות | Vision (iOS) / ML Kit (Android) | 1–2 שבועות |
| תיקון פרספקטיבה | CIPerspectiveCorrection / OpenCV | שבוע |
| פוסט-עיבוד | סף אדפטיבי, הפחתת רעש, השוואת רקע | שבועיים |
| הרכבת PDF | PDFKit (iOS) / iText7 (Android) | שבוע |
| OCR | VNRecognizeTextRequest / Google Cloud Document AI | 2–3 שבועות |
| סנכרון ענן | iCloud Drive / Google Drive SDK | שבועיים |
הרכבת PDF ו-OCR. PDF רב-עמודים מורכב באמצעות PDFKit ב-iOS — פשוט:
let pdfDocument = PDFDocument()
for (index, image) in scannedPages.enumerated() {
let pdfPage = PDFPage(image: image)!
pdfDocument.insert(pdfPage, at: index)
}
pdfDocument.write(to: outputURL)ב-Android — iText7 או PdfDocument מ-Android SDK. OCR ל-PDF הניתן לחיפוש הוא תכונה נפרדת. VNRecognizeTextRequest ב-iOS עם revision3 מספק איכות מקובלת לרוסית ואנגלית (דיוק זיהוי עד 99%). התוצאות מוטמעות כשכבת טקסט נסתרת דרך PDFKit. למשימות רציניות (ארכיונים, מסמכים משפטיים) — Google Cloud Document AI או Tesseract עם מנוע LSTM.
אחסון וסנכרון. מסמכים תופסים מקום: עמוד PDF בגודל A4 ב-200 DPI — כ-200–400 KB לאחר דחיסת JPEG באיכות 85. ללא דחיסה — 2–5 MB. אסטרטגיית אחסון: מקומית ב-Application Support (לא Documents — אחרת iCloud קולט אוטומטית את כל הסריקות), סנכרון דרך iCloud Drive או backend מותאם אישית לפי דרישת המשתמש. לשילוב Google Drive / Dropbox, אנו משתמשים ב-SDK רשמיים, לא ב-REST ישירות — הם מטפלים בחידוש טוקנים ובחידוש לאחר הפרעה.
ציר זמן פיתוח
סורק בסיסי עם זיהוי אוטומטי ו-PDF — 3–4 שבועות. עם OCR, PDF הניתן לחיפוש, סנכרון ענן ומצב רב-עמודים — 6–9 שבועות. העלות מחושבת באופן אישי, אך הודות לארכיטקטורה המודולרית שלנו, אנו יכולים להתאים לכל תקציב חברה. בדרך כלל, העלויות נעות בין $20,000 לסורק בסיסי ל-$60,000 לאפליקציה מלאה עם OCR וסנכרון ענן.
מה כלול בפרויקט
- קוד מקור מלא (Swift/Kotlin) עם ארכיטקטורה מודולרית
- תיעוד ארכיטקטורה ודיאגרמות מפורטות
- הגדרת צינור CI/CD (GitHub Actions או Bitrise)
- גישת TestFlight (iOS) ו-Google Play beta
- 30 ימי תמיכה חינם עם מענה מועדף
- הדרכת צוות ומדריך בנייה
התהליך שלנו
| שלב | תוצאה |
|---|---|
| ניתוח | מפרט, אבטיפוס, בחירת מחסנית טכנולוגית |
| עיצוב | ארכיטקטורה, אבטיפוס ממשק משתמש |
| פיתוח | קוד מקור ב-Swift/Kotlin, צינור CI/CD |
| בדיקות | בדיקות אוטומטיות, QA על מסמכים אמיתיים |
| פריסה | פרסום ל-App Store / Google Play, TestFlight |
| תמיכה | 30 ימי תמיכה חינם, תיעוד |
אנו מציעים גם הדרכה לצוות הלקוח ומדריך בנייה.
מחפשים שותף אמין? צרו קשר — תוך 24 שעות נכין הצעה מסחרית עם תוכנית מפורטת והערכה מדויקת. הזמינו פיתוח היום והבטיחו שהמשתמשים שלכם יקבלו סריקה איכותית מהפריים הראשון.







