여권정보 데이터 추출 관련 문의 드립니다

프로그램내에서 여권스캐너를 연동해서 여권데이터를 추출하고 있습니다
여권마다 데이터 길이나 자리수가 다르기 때문에 원하는 데이터를 뽑을때 어려움이있는데요

저는 이런식으로 코드를 작성했는데

//OcrArray = PMKORPARK<<A<B<<<<<<<<<<<<<<<<<<<<<<<<<M123456781KOR4503010M12345678912345V12345678
//OcrArray = PMKORPARK<<AB<<<<<<<<<<<<<<<<<<<<<<<<<<<<<M123456789KOR4503015M12345678912345V12345678
     var OcrArray = ocr.Substring(0).Split(new[] { "<" }, StringSplitOptions.RemoveEmptyEntries);
          if (OcrArray.Length == 4)
           {
              scanData.FullName = OcrArray[0] + OcrArray[1] + OcrArray[2];
              scanData.LastName = OcrArray[0];
              scanData.FirstName1 = OcrArray[1];
              scanData.FirstName2 = OcrArray[2];
              scanData.PassportNum = OcrArray[3].Replace("\n", "").Substring(0, 9);
              scanData.Nation= OcrArray[3].Replace("\n", "").Substring(10, 3);
              scanData.Birth = OcrArray[3].Replace("\n", "").Substring(13, 6);
              scanData.Sex = OcrArray[3].Replace("\n", "").Substring(20, 1);
           }
           else
           {
              scanData.FullName = OcrArray[0] + OcrArray[1];
               scanData.LastName = OcrArray[0];
               scanData.FirstName1 = OcrArray[1];
               scanData.PassportNum = OcrArray[2].Replace("\n", "").Substring(0, 9);
               scanData.Nation = OcrArray[2].Replace("\n", "").Substring(10, 3);
               scanData.Birth = OcrArray[2].Replace("\n", "").Substring(13, 6);
               scanData.Sex = OcrArray[2].Replace("\n", "").Substring(20, 1);
           }

제가 작성한 코드말고 더 좋은 방법으로 데이터를 추출할수 있는 방법이 있을까요?
이름의 띄어쓰기가 있는지 없는지와 같이 여러 조건이 있어서 데이터 추출을 쉽게 하지 못하고 있습니다

1 Like

여권 스캐너의 설명서를 보면 데이터 구조에 대해 설명이 나와 있습니다.

주석으로 예시된 케이스로는 분해하는 코드가 잘 작성 되었는지 알 수 없습니다.

1 Like

snifter/MRZCode.NET: MRZ parser for .NET (github.com)
이런 걸 사용하셔도 될듯합니다.

2 Likes