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

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

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

//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개의 좋아요

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

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

1개의 좋아요

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

2개의 좋아요