Ana içeriğe geç

iOS - OCR Modülü

OCR Modülü, arka kamera üzerinden kimlik kartı ve pasaport üzerindeki verileri okur. Görsel obje analizi, hologram tespiti, yüz fotoğrafı okuma, MRZ alanı okuma ve görsel güvenlik öğelerinin doğrulanması bu modül tarafından gerçekleştirilir.

OCR modülü, arka kamera üzerinden alınan görüntülerle kimlik kartının (Kimlik veya Pasaport) üzerindeki görsel objelerin , hologramın analizi, kimliğin yüzündeki verilerin okunması, kimliğin MRZ alanındaki verilerin okunması gibi bir dizi kontrol işlemleri gerçekleştirir.

Analiz işlemi sırasında kimliğin kamera ile doğru hizalanmış olması önemlidir. Ayrıca cihazın performansı ve kamera kalitesine bağlı olarak analiz süresi değişiklik gösterebilir. Bu modül kimlik doğrulama süreçlerinde etkin ve güvenilir bir çözüm sunar.

⚠atlassian-warning#FFEBE6

OCR modülünü kullanılmak istendiğinde, Core Modülü projeye eklenmek zorundadır. Bu, modüllerin temel işlevselliklerini sağlamak için gereklidir.

EnQualifyOCR SDK'nın Projeye Entegrasyon Adımları

Bu rehber, EnQualifyOCR SDK'nın projeye nasıl entegre edileceğini açıklamaktadır. Aşağıdaki adımları takip ederek hızlı ve kolay bir şekilde entegrasyonu gerçekleştirebilirsiniz.

Core Modülü Nedir

OCR modülü eklenmeden önce Core Modülü projeye dahil edilmelidir. Core modülünün nasıl ekleneceğini öğrenmek için Core Modülü dokümanını ziyaret edebilirsiniz.

EnQualifyOCR Nedir

EnQualifyOCR, Kimlik (Kimlik veya Pasaport) kontrolü ve analizi ile ilgili işlemlerin gerçekleştirilmesi ve yönetilmesi için kullanılır. EnQualifyOcr kullanımına dair detaylara erişmek için EnQualifyOCR Kullanım Kılavuzu bölümünü inceleyebilirsiniz.

Hızlı İmplementasyon

Projenizde hızlı bir entegrasyon gerçekleştirmek için OCR Modülü Nasıl İmplemente Edilir? bölümüne başvurabilirsiniz.

OCR Modülü Projeye Eklenmesi

EnQualify iOS SDK, doğrudan projeye entegre edilebilir:

  • Yöntem: SDK'yı doğrudan projeye xcframework embed ederek eklemek ve gerekli olan bağımlılıkları cocoapods üzerinden yüklemek.
Text Only
// target 'MySampleProject' do
  use_frameworks!
  pod 'TensorFlowLiteSwift' # Kimlik tespiti
  pod 'TensorFlowLiteSwift/Metal' # Kimlik tespiti
end


post_install do |installer|
   installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
        config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
        config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
        config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
        config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
        config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = ""
        config.build_settings['VALID_ARCHS'] = "arm64 x86_64"
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.5'
        config.build_settings["ONLY_ACTIVE_ARCH"] = "YES"
    end
  end
end

Kurulum Sonrası Build Ayarları Açıklaması

BUILD_LIBRARY_FOR_DISTRIBUTION = YES:

Framework'ün dağıtım için inşa edilmesini sağlar, böylece başka projelerde ikili (binary) veya paylaşılan framework olarak kullanılabilir. Bu, özellikle XCFramework'ler oluşturulurken faydalıdır.

EXPANDED_CODE_SIGN_IDENTITY = "":

Code Signing Identity temizlenir; böylece build sürecinde belirli bir sertifika kullanılmadığından emin olunur.

CODE_SIGNING_REQUIRED = NO:

Build sürecinde code signing gereksinimini devre dışı bırakır. Bu, test sırasında veya imzalamanın gerekli olmadığı durumlarda kullanışlıdır.

CODE_SIGNING_ALLOWED = NO:

Code Signing tamamen devre dışı bırakıldığından emin olur.

EXCLUDED_ARCHS[sdk=iphonesimulator*] = "":

iPhone simülatörü için önceden hariç tutulan tüm mimarileri kaldırır. Bu ayar, build sürecinde uyumluluğu sağlar.

VALID_ARCHS = "arm64 x86_64":

Build için geçerli mimarileri belirtir. Burada, arm64 (M Serisi) ve x86_64 (intel işlemcili) macler için kullanılır.

IPHONEOS_DEPLOYMENT_TARGET = 14.0:

Uygulama veya framework'ün desteklediği minimum iOS sürümünü ayarlar. Bu, iOS 14.0 ve üzeri cihazlarla uyumluluğu sağlar.

ONLY_ACTIVE_ARCH = YES:

Build sürecini yalnızca aktif build cihazı veya simülatörün mimarisi ile sınırlar. Bu, geliştirme sırasında build süresini hızlandırabilir.

XCFrameworks

  • EnQualify SDK'yı doğrudan projenize entegre etmek için, temel SDK dosyaları olan OCRModule.xcframework, NFCModule.xcframework, FaceModule.xcframework CoreModule.xcframework ve VideoCallModule.xcframework'i doğrudan proje dosyalarınıza ekleyebilirsiniz.
  • Alternatif olarak, XCFramework'leri projenize zaten kopyaladıysanız, bu framework'leri projenize eklemek için Project Settings > General bölümüne gidip Embed and Sign seçeneğini seçebilirsiniz.
  • Bu şekilde eklenen EnQualify SDK'nın bağımlılıkları için, ilgili sürümün "podspec" dosyasında belirtilen veya sağlayıcı tarafından belirlenen sürüm numaraları ile projenize dahil etmeniz gerekmektedir.

OCR Modülü Nasıl Implemente Edilir?

1. Modüllerin eklenmesi

1.1 Core Modülünün İmplementasyonu

EnQualifyOCR Modülü kullanılmadan önce Core Modülü projeye dahil edilmelidir. Eğer henüz eklemediyseniz, detaylar için Core Modülü dokümantasyonuna bakabilirsiniz.

1.2 OCR Modülünün Projeye Eklenmesi

OCR Modülü entegrasyonu için gerekli talimatları OCR Modülünün Projeye Eklenmesi başlığı altında bulabilirsiniz. Bu adımları takip ederek OCR modülünü projeye dahil edin.


2. İzinler

2.1 Info.plist Dosyasına Kamera İzni Ekleme

Öncelikle, Info.plist dosyasına kamera izni eklemeniz gerekmektedir. Bu, uygulamanızın kamera donanımına erişebilmesini sağlar.

Text Only
<key>NSCameraUsageDescription</key>

2.2 Runtime İzin İsteme

Initialize fonksiyonu içerisinde kamera izni istenmektedir.

Text Only
EnQualifyOCR.initialize(_ sender: Any?,
                        sessionModel: SessionModelOCR? = nil,
                        baseModel: BaseModelOCR? = nil)

Eğer kamera izni verilmez ise initializeFailed(with key: CustomNSError) delegate'i tetiklenir. İzin verilir ise initializeCompleted(moduleName: String) delegate'i tetiklenir.


3. EnQualifyOCRDelegate Arayüzünün Eklenmesi

EnQualifyOCRDelegate, OCR işlemlerini yönetmek için gerekli delegate metotlarını içerir. Bu interface implemente ederek OCR ile ilgili olayları dinleyebilir ve yönetebilirsiniz. Detaylı bilgi için EnQualifyOCR Kullanım Kılavuzu bölümünü inceleyebilirsiniz.

3.1 EnQualifyOCRDelegate 'in Sınıfa Eklenmesi

Text Only
class ViewController: EnQualifyOCRDelegate {

3.2 Delegate Fonksiyonlarının Override Edilmesi

Text Only
class ViewController: EnQualifyOCRDelegate {
     func hologramCheckVerified() {}

     func idDocTypeCheckVerified(isFront: Bool) {}

     func idDocFrontCompleted() {}

     func idDocBackCompleted() {}

     func idDocCompleted() {}

     func idDocFailed(error: EnQualifyOcrError) {}

     func initializeCompleted(moduleName: String) {}

     func initializeFailed(with key: CustomNSError) {}

     func sessionCloseCompleted(status: String) {}

     func sessionCloseFailed() {}

     func tokenCreateCompleted() {}

     func tokenCreateFailed() {}

     func integrationAddCompleted() {}

     func integrationAddFailed() {}

     func sessionAddFailed() {}

     func settingGetFailed() {}

     func signingSetCompleted() {}

     func signingCompleted() {}

     func signingSetFailed(error: String) {}
}

4. EnQualifyOCR 'nın Initialize Edilmesi ve Token, Ayar ve Oturum İşlemleri

Initalize edilmeden önce core;

  • EnQualifyOCRDelegate metodları, hangi UIViewController içerisinde kullanılacak ise o UIViewController 'ın delegate alanına eklenmelidir.
  • SessionModelOCR, OCR başlatmak için kullanılacak parametreleri içeren modeldir ve başlatma işleminde ilgili alana bu model eklenmelidir. Detaylı bilgi için SessionModelOCR bölümünü inceleyebilirsiniz.
  • BaseModelOCR, OCR için gerekli olan sertifika ve temel URL bilgilerini içeren modeldir ve başlatma işleminde ilgili alana bu model eklenmelidir. Detaylı bilgi için BaseModelOCR bölümünü inceleyebilirsiniz.

OCR işlemlerine başlamadan önce, EnQualifyOCR sınıfının initialize edilmesi gerekir. Bu işlem, gerekli olan token, settings, ve session işlemlerinin başlatılmasını sağlar. Ayrıca, kullanıcıya OCR işlemi için hazırlıkların tamamlandığını bildirmek ve ardından işlem sürecini başlatmak önemlidir.

Text Only
func initialize(_ sender: Any?,
                sessionModel: SessionModelOCR? = nil,
                baseModel: BaseModelOCR? = nil) {

Parametreler

Parametre Tip Açıklama
delegate Any? Uygulamanın hangi UIViewController içerisinde kullanılacağı belirlenir.
sessionModel SessionModelOCR OCR işlemi sırasında kullanılacak oturum bilgilerini içerir.
baseModel BaseModelOCR Doğrulama sürecinde temel verileri taşıyan modeldir.

EnQualifyOCR initialize edildikten sonra EnQualifyOCR instance oluşturulur ve ardından token, settings ve session oluşturmak için gerekli işlemleri başlatır. initialize yapıldıktan sonra token, settings ve session sdk tarafından yönetilir.

EnQualifyOCR instance 'ı oluşturulduktan sonra şu adımlar sırasıyla gerçekleştirilir:

  1. Token Oluşturma

  2. EnQualifyOCR, token oluşturma sürecini başlatır.

  3. Eğer token oluşturma işlemi sırasında bir hata oluşursa, tokenCreateFailed delegate'i tetiklenir.
Text Only
func tokenCreateFailed() {}
  • Token başarıyla oluşturulduğunda, bir sonraki adım olan session işlemine geçilir.
  • Oturum İşleminin Başlatılması

  • Token başarılı bir şekilde alındıktan sonra oturum başlatma süreci devreye girer.

  • Eğer oturum başlatma sırasında bir hata oluşursa, sessionAddFailed delegate'i tetiklenir.
Text Only
func sessionAddFailed() {}
  • Oturum işlemi başarıyla tamamlandığında, SDK backoffice ile bağlantıyı kurmuş olur ve işlem başlatmaya hazır hale gelir.
  • Ayarların Alınması

  • Session başarılı bir şekilde oluşturulduktan sonra, backoffice üzerinden tanımlanan ayarların alınma işlemi başlatılır.

  • Eğer bu süreçte bir hata oluşursa, settingsGetFailed delegate'i tetiklenir ve hata mesajı client tarafına iletilir.
Text Only
func settingGetFailed() {}
  • Ayarlar başarıyla alındığında, SDK ilgili konfigürasyonları yapar ve oturum işlemini başlatır.
  • İşlem Tamamlama

  • Tüm adımlar sorunsuz bir şekilde tamamlandığında, initializeCompleted delegate'i tetiklenir. Bu, SDK'nın başarıyla initialize edildiğini ve OCR işlemlerine hazır olduğunu belirtir.

Text Only
func initializeCompleted(moduleName: String) {}

Bu süreç, EnQualifyOCR'nın sağlam bir şekilde çalışmasını sağlamak için tasarlanmıştır. Olası hatalar, ilgili delegate'ler aracılığıyla client veya kullanıcıya iletilerek gerekli aksiyonların alınmasını kolaylaştırır.


5. OCR İşleminin Başlatılması

Bu bölümde, OCR işlemlerinin nasıl başlatılacağını ve yönetileceğini adım adım açıklıyoruz.

5.1 Kullanıcı Bilgilendirme

OCR işlemi başlamadan önce, kullanıcıya bilgilendirme yapılması önerilir. Bunun için bir OCRInfo sayfası oluşturulabilir.
Bu sayfa, kullanıcıya OCR işlemi hakkında bilgi verir ve daha iyi bir deneyim sağlar.

5.2 OCR İşlemleri

OCR fonksiyonları ve delegate'leri ile ilgili detaylı bilgi için EnQualifyOCR Kullanım Kılavuzu'na göz atabilirsiniz.

  • idDocTypeCheckStart(in vc: UIViewController, isFront: Bool)
  • hologramCheckStart(in vc: UIViewController)
  • idDocFrontStart(in vc: UIViewController, withVisualAnalysis: Bool)
  • idDocBackStart(in vc: UIViewController, withVisualAnalysis: Bool)
  • idDocComplete(withDelay delay: TimeInterval = 0.0)
  • sessionClose(finished: Bool)

5.2.1 Kimlik Tipi Tanıma İşleminin Yapılması

Kimlik tipi tanıma işlemini başlatmak için idDocTypeCheckStart fonksiyonu kullanılır. Bu işlem, EnQualifyOCR API tarafından yönetilir ve aşağıdaki gibi çağrılır.

Text Only
EnQualifyOCR.idDocTypeCheckStart(in: self, isFront: true)

Delegate Mekanizması

Kimlik tipi tanıma işlemi başarıyla tamamlandığında, idDocTypeCheckVerified delegate'i tetiklenir. Bu delegate içerisinde, işlem sonrasında yapılması gereken diğer işlemler ele alınabilir.

Text Only
func idDocTypeCheckVerified(isFront: Bool) {}

5.2.2 Kimlik Ön Yüzü Tarama İşleminin Yapılması

Kimlik ön yüzünü tarama işlemini başlatmak için idDocFrontStart fonksiyonu kullanılır. Bu işlem, EnQualifyOCR API tarafından yönetilir ve aşağıdaki gibi çağrılır.

Text Only
EnQualifyOCR.idDocFrontStart(in: self, withVisualAnalysis: true)

Delegate Mekanizması

Kimlik ön yüzü tarama işlemi başarıyla tamamlandığında, idDocFrontCompleted delegate'i tetiklenir. Bu delegate içerisinde, işlem sonrasında yapılması gereken diğer işlemler ele alınabilir.

Text Only
func idDocFrontCompleted() {}

5.2.3 Kimlik Ön Yüzü Hologram Tespit İşleminin Yapılması

Kimlik ön yüzünde bulunan hologramın tespit işlemini başlatmak için hologramCheckStart fonksiyonu kullanılır. Bu işlem, EnQualifyOCR API tarafından yönetilir ve aşağıdaki gibi çağrılır.

Text Only
EnQualifyOCR.hologramCheckStart(in: self)

Delegate Mekanizması

Kimlik ön yüzünde bulunan hologramın tespit işlemi başarıyla tamamlandığında, hologramCheckVerified delegate’i tetiklenir. Bu delegate içerisinde, işlem sonrasında yapılması gereken diğer işlemler ele alınabilir.

Text Only
 func hologramCheckVerified() {}

5.2.4 Kimlik Arka Yüzü Tarama İşleminin Yapılması

Kimlik arka yüzünü tarama işlemini başlatmak için idDocBackStart fonksiyonu kullanılır. Bu işlem, EnQualifyOCR API tarafından yönetilir ve aşağıdaki gibi çağrılır.

Text Only
EnQualifyOCR.idDocBackStart(in: self, withVisualAnalysis: true)

Delegate Mekanizması

Kimlik ön yüzü tarama işlemi başarıyla tamamlandığında, idDocBackCompleted delegate’i tetiklenir. Bu delegate içerisinde, işlem sonrasında yapılması gereken diğer işlemler ele alınabilir.

Text Only
func idDocBackCompleted() {}

5.2.5. Kimlik Tespiti (OCR) Akışını Bitirdiğini Bildirme

Tüm kimlik tespiti adımları tamamlandığında, idDocComplete fonksiyonu kullanılarak SDK'ya işlemlerin sona erdiği bildirilir. Bu fonksiyon, aynı zamanda kameradan yapılan analizleri durdurur , işlem sürecini sonlandırır ve okunan dataların backoffice gönderilme sürecini başlatır.

Text Only
EnQualifyOCR.idDocComplete(withDelay: 0.0)

Okunan datalar backoffice gönderilme işlemi tamamlandığında idDocCompleted delegate'i tetiklenir.

Text Only
func idDocCompleted() {}

5.2.6. SDK Session'ını Kapatma

Session Kapatma İşleminin Yapılması

SDK'ların backend servislerle iletişim için kullandığı session'ın kapatılması için sessionClose fonksiyonu kullanılır. Bu işlem, EnQualifyCore API tarafından yönetilir, fakat her SDK'nın API tarafında aşağıdaki gibi çağrılır.

⚠atlassian-warning#FFEBE6

Session bir SDK tarafından kapatıldıktan sonra eğer tekrar kullanılacak ise yeniden SDK initialize edilmesi gerekir.

Text Only
EnQualifyOCR.sessionClose(finished: false)

Delegate Mekanizması

Session kapatma işlemi başarıyla tamamlandığında, sessionCloseCompleted delegate'i tetiklenir. Bu delegate içerisinde, işlem sonrasında yapılması gereken diğer işlemler ele alınabilir.

Text Only
func sessionCloseCompleted(status: String) {}

Session kapatma işlemi başarısız olduğunda, sessionCloseFailed delegate'i tetiklenir. Bu delegate içerisinde, işlem sonrasında yapılması gereken diğer işlemler ele alınabilir.

Text Only
func sessionCloseFailed() {}

5.2.7 Replace Sound

Text Only
func replaceSound(currentVoice: [String], newVoice: String)

replaceSound fonksiyonu, SDK içerisinde belirli bir ses dosyasının yerine başka bir ses dosyasını çalmak veya ilgili sesin çalınmasını engellemek için kullanılır.
Bu özellik, özellikle kullanıcı akışı içinde belirli durumlarda (örneğin bir hata sayısına ulaşıldığında veya akış yönü değiştiğinde) dinamik ses kontrolü sağlamak amacıyla tasarlanmıştır.


Parametreler

Parametre Tip Açıklama
currentVoice [String] Değiştirilmek veya çalınmaması istenen mevcut ses(ler)in ismi. Bu parametre bir dizi olarak gelir çünkü örneğin OCR, NFC veya Face aşamalarında birden fazla hata tipi (örneğin timeout, fail, vb.) farklı seslerle ilişkilendirilebilir.
newVoice String currentVoice parametresinde belirtilen ses(ler) yerine çalınacak yeni sesin adı. Eğer boş ("") string verilirse, SDK bu adımı sessiz olarak geçer ve herhangi bir ses çalmaz.

Kullanım Senaryosu

Örneğin, kullanıcı akışınızda üç başarısız OCR denemesi sonrası görüntülü görüşmeye yönlendirme senaryosu bulunuyorsa, ilk iki başarısız denemede "fail_ocr_voice" sesi çalınabilir.
Ancak üçüncü hatada "fail_ocr_voice" yerine "go_to_videocall" sesinin çalınmasını istiyorsanız, replaceSound fonksiyonunu şu şekilde kullanabilirsiniz:

Text Only
replaceSound(currentVoice: ["fail_ocr_voice"], newVoice: "go_to_videocall")

Not:

Sonuç sayfasında okunan verileri göstermek için CustomerIdentitybölümünü inceleyebilirsiniz. Bu bölüm, okunan verilerin kullanıcıya düzgün ve anlaşılır bir şekilde sunulmasını sağlar.

EnQualifyOCR Kullanım Kılavuzu

EnQualifyOCR modülü, arka kamera üzerinden alınan görüntülerle kimlik kartının (Kimlik veya Pasaport) üzerindeki görsel objelerin analizi , hologram analizi, kimliğin yüzündeki verilerin okunması, kimliğin MRZ alanındaki verilerin okunması gibi bir dizi kontrol işlemleri yapmak için kullanılır. Aşağıda, ilgili fonksiyonlar ve delegate'ler açıklanmıştır.

Fonksiyonlar

initialize(...) : EnQualifyOCR

Text Only
func initialize(_ sender: Any?,
                sessionModel: SessionModelOCR? = nil,
                baseModel: BaseModelOCR? = nil) {

Kimlik tanıma işlemlerini yönetmek için EnQualifyOCR başlatılmalıdır. Bu API, initialize edilirken;

  • sender: Any** :** Uygulamanın delegate metodlarını hangi classın karşılayacağını belirler.
  • sessionModel: SessionModelOCR : OCR işlemi sırasında kullanılacak oturum bilgilerini içerir.
  • baseModel: BaseModelOCR : Doğrulama sürecinde temel verileri taşıyan modeldir.

verilebilir.

API, singleton yapıda çalıştığı için uygulama oturumu boyunca aynı instance üzerinden işlemler gerçekleştirilir. Bu, hem kaynak tasarrufu sağlar hem de işlem tutarlılığını artırır. Başlatma işlemi, otomatik olarak şu işlemleri gerçekleştirir:

  • Token oluşturma
  • Settings yapılandırma
  • Session başlatma Eğer mevcut bir session varsa, yeni bir session oluşturulmaz ve mevcut session kullanılmaya devam edilir.

Delegate'ler

Token / Session / Settings Delegate'leri

tokenCreateCompleted()

  • Token oluşturma işlemi tamamlandığında tetiklenir.
  • Eğer mevcut bir token varsa, yeniden oluşturulmaz ve mevcut token kullanılır.

tokenCreateFailed()

  • Token oluşturulurken hata alınırsa tetiklenir.

settingsGetFailed()

  • Settings bilgilerini çekerken hata alınırsa tetiklenir.

sessionAddFailed()

  • Yeni bir session oluşturulurken hata alınırsa tetiklenir.

sessionCloseCompleted(status: String)

  • Session kapatıldığında tetiklenir.
  • Parametre:

  • status : Session kapandığında session'ın statu bilgisi.


sessionCloseFailed()

  • Session kapatılırken hata alınırsa tetiklenir.

integrationAddCompleted()

  • IntegrationAdd servisine yapılan istek tamamlandığında tetiklenir.

integrationAddFailed()

  • IntegrationAdd servisi istek yapıldığında hata alınırsa tetiklenir.

OCR Callback'leri

IDDocFailed(error: EnQualifyOcrError)

Text Only
public enum EnQualifyOcrError: Error {
    case timeout(OCRState, String)
    case idDocSave(String)
    case idDocFailed(OCRState, String)
    case cameraSetup(String)

    public var ocrErrorDescription: String {
        switch self {
        case .timeout(let state, let message):
            return "Timeout during \(state) state with \(message)"
        case .idDocSave(let message):
            return "Error while saving id document"
        case .idDocFailed(let state, let message):
            return "Authentication failed during \(state). Please try again."
        case .cameraSetup(let message):
            return "Camera setup failed: \(message)"
        }
    }
}
  • Kimlik tanıma işlemlerinde bir hata aldığında veya başarısız olduğunda tetiklenir.
  • Parametreler:

  • state: OCR aşaması.

  • ocrErrorDescription: Hata mesajı.

idDocTypeCheckVerifiedFront()

  • Kimlik tipini tespit etmek amacıyla çağrılan idDocTypeCheckStartFront fonksiyonunun ardından, kimlik tipi başarıyla belirlendiğinde tetiklenir. idDocFrontStart fonksiyonuyla devam eder.

hologramCheckVerified()

  • Kimliğin ön yüzünde bulunan hologramın tespiti amacıyla çağrılan hologramCheckStart fonksiyonunun ardından, hologram başarıyla tespit edildiğinde tetiklenir.

idDocFrontCompleted()

  • Kimliğin ön yüzünün tanınması ve üzerindeki verilerin okunması için çağrılan idDocFrontStart fonksiyonunun ardından, işlem başarıyla tamamlandığında tetiklenir.

idDocTypeCheckVerifiedBack()

  • Kimlik tipini tespit etmek amacıyla çağrılan idDocTypeCheckStartBack fonksiyonunun ardından, kimlik tipi başarıyla belirlendiğinde tetiklenir. idDocBackStart fonksiyonuyla devam eder.

idDocBackCompleted()

  • Kimliğin arka yüzünün tanınması ve MRZ alanındaki verilerin okunması için çağrılan idDocBackStart fonksiyonunun ardından, işlem başarıyla tamamlandığında tetiklenir.

idDocComplete(withDelay: 0.0)

  • Tüm kimlik tespiti adımları tamamlandığında, idDocComplete fonksiyonu kullanılarak SDK'ya işlemlerin sona erdiği bildirilir. Bu fonksiyon, aynı zamanda kameradan yapılan analizleri durdurur , işlem sürecini sonlandırır ve okunan dataların backoffice gönderilme sürecini başlatır.
  • Parametre:

  • withDelay : Kamera session'ının ne kadar geç kapanması gerektiğini belirler.


idDocCompleted()

  • Kimlik tanıma işlemi başarıyla tamamlandıktan ve okunan veriler backoffice’e başarılı bir şekilde gönderildikten sonra tetiklenir.

Modeller

BaseModelOCR

BaseModelOCR, Doğrulama süreçlerinde kullanılan sertifika bilgilerini ve sunucu bağlantı adresini içeren veri modelidir. Signaling (Haberleşme) ve MAPI (Mobile-Application Programming Interface) sertifikaları hem dosya (.der) formatında hem de Base64 metin formatta saklanır.

Model

Text Only
class BaseModelOCR(
    var signallingCertificateList: [String]? = nil
    var mapiCertificateList: [String]? = nil
    var signallingCertificateBase64List: [String]? = nil
    var mapiCertificateBase64List: [String]? = nil
    var baseURL: String //Zorunlu alan
    var locale: String? = nil
    var mobileUser: String? = nil
    var countryCode: String? = nil
)

Özellikler

Özellik Tip Açıklama
signallingCertificateList [String]? Signalling sertifikalarının dizisi. Sertifikalar metin formatında saklanır.
mapiCertificateList [String]? MAPI sertifikalarının dizisi. Sertifikalar metin formatında saklanır.
signallingCertificateBase64List [String]? Signalling sertifikalarının Base64 formatında kodlanmış halleri.
mapiCertificateBase64List [String]? MAPI sertifikalarının Base64 formatında kodlanmış halleri.
*baseURL String API doğrulama işlemleri için kullanılan temel sunucu adresi.
locale String? Sesli yönlendirme mesajlarının hangi dilde olacağını belirler.
mobileUser String? Authorization sağlanırken kullanılan anonymous user bilgisini ifade eder.
countryCode String? Ülke ya da bölge özelinde doğrulama yapılırken, gerekli olan verilerin bölge özelinde edinilmesini sağlamak için kullanılır.

Kullanım Örneği

Aşağıdaki örnekte, BaseModelOCR nesnesi oluşturularak sertifika bilgileri ve sunucu adresi tanımlanmaktadır:

Text Only
var baseModelOCR = BaseModelOCR(
    signallingCertificateList: ["AI_CERT_1", "AI_CERT_2"],
    mapiCertificateList: ["MAPI_CERT_1", "MAPI_CERT_2"],
    signallingCertificateBase64List: ["QUlDRVJU...", "Q0VSVF8y..."],
    mapiCertificateBase64List: ["TU9SRSB...", "Q0VSVF8z..."],
    baseURL: "API_SERVER_URL",
    locale: "TR",
    mobileUser: "mobile",
    countryCode: "TUR"
)

Açıklamalar

  • Sertifikalar (signallingCertificateList, mapiCertificateList): Sertifika bilgileri düz metin formatında saklanır.
  • Base64 Sertifikalar (signallingCertificateList, mapiCertificateBase64List): Sertifikaların Base64 formatına çevrilmiş halleri.
  • Sunucu Bağlantısı (baseURL): Doğrulama veya sertifika işlemlerinin gerçekleştirileceği sunucu URL’si.

SessionModelOCR

SessionModelOCR, Bir çağrı oturumu sırasında kullanıcı ve kimlik bilgilerini içeren veri modelidir. Çağrı türü, kullanıcı detayları, kimlik bilgileri ve oturumla ilgili ek parametreleri içerir.

Model Tanımı

Text Only
class SessionModelOCR(
    var callType: String, // Zorunlu alan
    var userName: String? = nil,
    var surname: String? = nil,
    var phone: String? = nil,
    var email: String? = nil,
    var identityType: String? = nil,
    var identityNo: String? = nil,
    var reference: String, // Zorunlu alan
    var canAutoClose: Bool = false, // Varsayılan: false
    var isContinue: Bool = false, // Varsayılan: false
    var category: String? = nil,
    var taxNumber: String? = nil,
    var businessReference: String? = nil,
    var handicapped: Bool? = false
)

Özellikler

Özellik Tip Açıklama
\*callType String Zorunlu. Çağrı türünü belirten parametre (örneğin: "NewCustomer").
userName String? Kullanıcının adı. Boş olabilir.
surname String? Kullanıcının soyadı. Boş olabilir.
phone String? Kullanıcının telefon numarası. Boş olabilir.
email String? Kullanıcının e-posta adresi. Boş olabilir.
identityType String? Kimlik türü (örneğin: "I"(T.C. Kimlik Kartı), "P"(Pasaport)). Boş olabilir.
identityNo String? Kullanıcının kimlik numarası. Boş olabilir.
\*reference String Zorunlu. Oturum için referans ID'si.
canAutoClose Bool Oturumun otomatik kapanıp kapanmayacağını belirler. Varsayılan: false.
isContinue Bool Oturumun devam edip etmeyeceğini belirler. Varsayılan: false.
category String? Oturumun ait olduğu kategori. Boş olabilir.
taxNumber String? Kullanıcıya ait vergi numarası. Boş olabilir.
businessReference String? İşletme ile ilgili referans bilgisi. Boş olabilir.
handicapped Bool Kullanıcının engelli olup olmadığını belirten bayrak. Varsayılan: false.

Kullanım Örneği

Aşağıdaki örnekte, SessionModelOCR nesnesi oluşturularak oturum bilgileri tanımlanmaktadır:

Text Only
var sessionModelOCR = SessionModelOCR(
    callType: "NewCustomer",
    userName: "Enqura",
    surname: "Information",
    phone: "+905551234567",
    email: "enqualifyplus@enqura.com",
    identityType: "TC. Kimlik Kartı",
    identityNo: "12345678901",
    reference: "REF123456",
    canAutoClose: true,
    isContinue: true,
    category: "category",
    taxNumber: "9876543210",
    businessReference: "COMPANY",
    handicapped: false
)

Açıklamalar

  • Zorunlu Alanlar: callType ve reference parametreleri mutlaka belirtilmelidir.
  • Kullanıcı Bilgileri: userName, surname, phone, email gibi alanlar isteğe bağlıdır.
  • Kimlik Bilgileri: identityType ve identityNo, NFC doğrulama veya kimlik tanımlama süreçlerinde kullanılabilir.
  • Engellilik Durumu: handicapped parametresi kullanıcının özel gereksinimlere sahip olup olmadığını belirtir.
  • Otomatik Kapanma: canAutoClose, oturumun belirli bir koşul gerçekleştiğinde otomatik olarak kapanmasını sağlayabilir.
  • Devam Durumu: isContinue, oturumun devam eden bir işlem olup olmadığını kontrol eder.

CustomerIdentity

Bu sınıf, bir belgenin (kimlik veya pasaport gibi) üzerinden okunan verilerin depolandığı veri modelini temsil eder.

Model

Text Only
@objc public class CustomerIdentity: NSObject {
    @objc public static let shared = CustomerIdentity()

    @objc public func getIdentityType() -> String? {}

    @objc public func getIssuingState() -> String? {}

    @objc public func getDocumentNumber() -> String? {}

    @objc public func getIdentityNumber() -> String? {}

    @objc public func getDateOfBirthDay() -> String? {}

    @objc public func getExpiryDate() -> String? {}

    @objc public func getNationality() -> String? {}

    @objc public func getSurname() -> String? {}

    @objc public func getName() -> String? {}

    @objc public func getGender() -> String? {}

    @objc public func getFrontImage() -> ConfidenceItem? {}

    @objc public func getBackImage() -> ConfidenceItem? {}

    @objc public func getPersonImage() -> ConfidenceItem? {}

    @objc public func getHoloFrontImage() -> ConfidenceItem? {}

    @objc public func getFrontIdentityNumber() -> String? {}

    @objc public func getFrontDateOfBirthDay() -> String? {}

    @objc public func getTuri1fFlag() -> ConfidenceItem? {}

    @objc public func getTuri1fMli() -> ConfidenceItem? {}

    @objc public func getTuri1fSignature() -> ConfidenceItem? {}

    @objc public func getTuri1fHologram1() -> ConfidenceItem? {}

    @objc public func getTuri1bBarcod() -> ConfidenceItem? {}

    @objc public func getTuri1bChip() -> ConfidenceItem? {}

    @objc public func getTuri1bICAOlogo() -> ConfidenceItem? {}
}

Kullanım Örneği

Aşağıdaki örnekte OCR işlemi sonrası OCR sonuç sayfasında model üzerinden bilgilerin alınarak gösterilmektedir.

Text Only
func setCustomerChipValues() {
    let customerCard = CustomerIdentity.shared

    chipData[0].value = customerDoc.getName() ?? ""
    chipData[1].value = customerDoc.getSurname() ?? ""
    chipData[2].value = (customerDoc.getFrontDateOfBirthDay() ?? "").convertDateFormat()
    chipData[3].value = customerDoc.getIdentityNumber() ?? ""
    chipData[4].value = customerDoc.getDocumentNumber() ?? ""
    chipData[5].value = customerDoc.getGender() ?? ""
    chipData[6].value = customerDoc.getNationality() ?? ""
    chipData[7].value = (customerDoc.getExpiryDate() ?? "").convertDateFormat()

    ocrImageData.holoPage = customerDoc.getHoloFrontImage()?.image ?? UIImage()
    ocrImageData.frontPage = customerDoc.getFrontImage()?.image ?? UIImage()
    ocrImageData.backPage = customerDoc.getBackImage()?.image ?? UIImage()
}

Dokunma Testi

Dokunma testi süreci, ilgili kimlik için OCR adımının başarıyla tamamlanmasının ardından devreye girer.

Dokuma Testi Nasıl Implemente Edilir?

1. Modüllerin eklenmesi

OCR Modülünün Projeye Eklenmesi

Dokunma testi kullanılmadan önce OCR Modülü projeye dahil edilmelidir. Eğer henüz eklemediyseniz, detaylar için OCR Modülü dokümantasyonuna bakabilirsiniz.

2. EnQualifyOCRDelegate Arayüzünün Eklenmesi

EnQualifyOCRDelegate, Dokunma testini yönetmek için gerekli delegate metotlarını içerir. Bu interface’i implemente ederek dokunma testi ile ilgili olayları dinleyebilir ve yönetebilirsiniz. Detaylı bilgi için Dokunma Testi Kullanım Kılavuzu bölümünü inceleyebilirsiniz.

2.1 EnQualifyOCRDelegate 'in Sınıfa Eklenmesi

Text Only
class ViewController: EnQualifyOCRDelegate {

2.2 Delegate Fonksiyonlarının Override Edilmesi

Text Only
class ViewController: EnQualifyOCRDelegate {
    // OCR için eklenen diğer delegate metotları
    // ...
    func frontCrescentConcealVerified() {}
    func frontMLIConcealVerified() {}
    func frontSignatureConcealVerified() {}
    func backOVIConcealVerified() {}
    func idDocConcealCompleted() {}
    func idDocConcealFailed() {}
}

3. Dokunma Testinin Yönetilmesi

Bu bölümde, Dokunma testi işlemlerinin nasıl yönetileceğini adım adım açıklıyoruz.

3.1 Kullanıcı Bilgilendirme

Dokunma testi başlamadan önce, kullanıcıya bilgilendirme yapılması önerilir. Bunun için bir Dokunma Testi Info sayfası oluşturulabilir.
Bu sayfa, kullanıcıya dokunma testi işlemi hakkında bilgi verir ve daha iyi bir deneyim sağlar.

3.2 Dokunma Testi İşlemleri

Dokunma testi fonksiyonları ve delegate'leri ile ilgili detaylı bilgi için Dokunma Testi Kullanım Kılavuzu'na göz atabilirsiniz.

  • performFrontCrescentConceal(in vc: UIViewController)
  • performFrontMLIConceal(in vc: UIViewController)
  • performFrontSignatureConceal(in vc: UIViewController)
  • performBackOVIConceal(in vc: UIViewController)
  • idDocConcealComplete(withDelay delay: TimeInterval)

3.2.1 Ön Yüz Hilal Dokunma İşleminin Yapılması

Ön yüz dokunma işlemini başlatmak için performFrontCrescentConceal fonksiyonu kullanılır. Bu işlem, EnQualifyOCR API tarafından yönetilir ve aşağıdaki gibi çağrılır.

Text Only
EnQualifyOCR.performFrontCrescentConceal(in: self)

Delegate Mekanizması

Ön Yüz Hilal Dokunma işlemi başarıyla tamamlandığında, frontCrescentConcealVerified delegate'i tetiklenir. Bu delegate içerisinde, işlem sonrasında yapılması gereken diğer işlemler ele alınabilir.

Text Only
func frontCrescentConcealVerified() {}

3.2.2 Ön Yüz MLI(Hayalet Resim) Dokunma İşleminin Yapılması

Ön yüz MLI dokunma işlemini başlatmak için performFrontMLIConceal fonksiyonu kullanılır. Bu işlem, EnQualifyOCR API tarafından yönetilir ve aşağıdaki gibi çağrılır.

Text Only
EnQualifyOCR.performFrontMLIConceal(in: self)

Delegate Mekanizması

Ön Yüz MLI dokunma işlemi başarıyla tamamlandığında, frontMLIConcealVerified delegate'i tetiklenir. Bu delegate içerisinde, işlem sonrasında yapılması gereken diğer işlemler ele alınabilir.

Text Only
func frontMLIConcealVerified() {}

3.2.3 Ön Yüz İmza Dokunma İşleminin Yapılması

Ön yüz imza dokunma işlemini başlatmak için performFrontSignatureConceal fonksiyonu kullanılır. Bu işlem, EnQualifyOCR API tarafından yönetilir ve aşağıdaki gibi çağrılır.

Text Only
EnQualifyOCR.performFrontSignatureConceal(in: self)

Delegate Mekanizması

Ön yüz imza dokunma işlemi başarıyla tamamlandığında, frontSignatureConcealVerified delegate'i tetiklenir. Bu delegate içerisinde, işlem sonrasında yapılması gereken diğer işlemler ele alınabilir.

Text Only
func frontSignatureConcealVerified() {}

3.2.4 Arka Yüz Optik Değişken Mürekkep Dokunma İşleminin Yapılması

Arka yüz optik değişken mürekkep dokunma işlemini başlatmak için performBackOVIConceal fonksiyonu kullanılır. Bu işlem, EnQualifyOCR API tarafından yönetilir ve aşağıdaki gibi çağrılır.

Text Only
EnQualifyOCR.performBackOVIConceal(in: self)

Delegate Mekanizması

Ön yüz imza dokunma işlemi başarıyla tamamlandığında, backOVIConcealVerified delegate'i tetiklenir. Bu delegate içerisinde, işlem sonrasında yapılması gereken diğer işlemler ele alınabilir.

Text Only
func backOVIConcealVerified() {}

3.2.5. Dokunma Testi Akışını Bitirdiğini Bildirme

Tüm dokunma testi adımları tamamlandığında, idDocConcealComplete fonksiyonu kullanılarak SDK'ya işlemlerin sona erdiği bildirilir. Bu fonksiyon, aynı zamanda kameradan yapılan analizleri durdurur , işlem sürecini sonlandırır ve okunan dataların backoffice gönderilme sürecini başlatır.

Text Only
EnQualifyOCR.idDocConcealComplete(withDelay: 0.0)

Okunan datalar backoffice gönderilme işlemi tamamlandığında idDocConcealCompleted delegate'i tetiklenir.

Text Only
func idDocConcealCompleted() {}

Dokunma Testi Kullanım Kılavuzu

Dokunma testi EnQualifyOCR modülü içerisinden kullanılan, arka kamera üzerinden alınan görüntülerle kimlik kartının üzerindeki görsel objelerin üzerinin kullanıcı tarafından kapatılıp kapatılmama durumunun analizini yapmak için kullanılır. Dokunma testi süreci, ilgili kimlik için OCR adımının başarıyla tamamlanmasının ardından devreye girer. Aşağıda, ilgili fonksiyonlar ve delegate'ler açıklanmıştır.

Delegate'ler

OCR Callback'leri

idDocConcealFailed()

  • Dokunma testi işlemlerinde bir hata aldığında veya başarısız olduğunda tetiklenir.

frontCrescentConcealVerified()

  • Ön yüz hilal öğesinin dokunma testi amacıyla çağrılan performFrontCrescentConceal fonksiyonunun ardından, ön yüz hilal öğesi başarıyla kapatıldığında tetiklenir.

frontMLIConcealVerified()

  • Ön yüz MLI(Hayalet Resim) öğesinin dokunma testi amacıyla çağrılan performFrontMLIConceal fonksiyonunun ardından, ön yüz MLI öğesi başarıyla kapatıldığında tetiklenir.

frontSignatureConcealVerified()

  • Ön yüz imza öğesinin dokunma testi amacıyla çağrılan performFrontSignatureConceal fonksiyonunun ardından, ön yüz imza öğesi başarıyla kapatıldığında tetiklenir.

backOVIConcealVerified()

  • Arka yüz optik değişken mürekkep öğesinin dokunma testi amacıyla çağrılan performBackOVIConceal fonksiyonunun ardından, arka yüz optik değişken mürekkep öğesi başarıyla kapatıldığında tetiklenir

idDocConcealComplete(withDelay: 0.0)

  • Dokunma testi adımları tamamlandığında, idDocConcealComplete fonksiyonu kullanılarak SDK'ya işlemlerin sona erdiği bildirilir. Bu fonksiyon, aynı zamanda kameradan yapılan analizleri durdurur , işlem sürecini sonlandırır ve okunan dataların backoffice gönderilme sürecini başlatır.
  • Parametre:

  • withDelay : Kamera session'ının ne kadar geç kapanması gerektiğini belirler.


idDocConcealCompleted()

  • Dokunma testi işlemi başarıyla tamamlandıktan ve okunan veriler backoffice’e başarılı bir şekilde gönderildikten sonra tetiklenir.