2010-09-24 38 views
5

Tôi có một máy quét kiểm tra kỹ thuật số có thể chụp dòng MICR từ séc. Nó sẽ trả về dòng MICR ở định dạng thô dưới dạng một chuỗi, với dấu phân tách để tách số tài khoản, số định tuyến và số kiểm tra. Tuy nhiên, mỗi ngân hàng định dạng dòng MICR này một cách khác nhau, vì vậy không có cách nào tiêu chuẩn để phân tích dữ liệu này.Làm cách nào để phân tích dữ liệu dòng MICR?

Một số công ty tôi đã thử là Inlite Research Inc và Accusoft Pegasus. API từ Nghiên cứu Inlite hoạt động cho một số ngân hàng, nhưng không thể đọc Ngân hàng của Mỹ kiểm tra chính xác. Tôi vẫn đang thử nghiệm API từ Accusoft.

Điều tôi đang hỏi là nếu có ai biết về API sẽ phân tích chính xác đường MICR cho các thành phần khác nhau. Có một API cho phép tôi thêm các định nghĩa mới về định dạng kiểm tra nếu tôi gặp phải một kiểm tra mới mà API không thể xử lý chính xác không? Hoặc, nếu có ai biết làm thế nào hoặc đã viết một thói quen để phân tích dòng MICR.

Tôi sẽ đánh giá cao bất kỳ trợ giúp nào tôi có thể nhận được. Cảm ơn bạn.

+0

Liệu các thiết bị bạn đang sử dụng có OPOS sẵn? http://en.wikipedia.org/wiki/OPOS – dgnorton

+0

Bạn đã bao giờ tìm thấy bất kỳ giải pháp nào cho điều này? – Avalanchis

Trả lời

3

Xin lỗi vì trả lời muộn. Tôi không thấy câu trả lời nào cho câu hỏi nên tôi nghĩ không ai trả lời.

Để trả lời các câu hỏi trên, tôi đã tìm thấy giải pháp sau khi suy nghĩ vấn đề và nói chuyện với nhiều nhà cung cấp khác nhau. Máy quét Kiểm tra mà tôi đang sử dụng đã có thể đọc dòng MICR. Vấn đề nằm ở việc phân tích cú pháp dòng MICR cho các thông tin liên quan như số vận chuyển định tuyến, số tài khoản, số kiểm tra/số sê-ri và số tiền (nếu có). Sau khi nói chuyện với một số ít các công ty bên thứ 3 và thử các phiên bản dùng thử có sẵn của trình phân tích cú pháp MICR, tôi đi đến kết luận rằng không có trình phân tích cú pháp phổ quát nào ngoài đó. Tôi vẫn phải đối mặt với vấn đề của trường On-Us không tương thích. Mỗi ngân hàng định dạng trường này khác nhau. Đôi khi các biểu tượng cũng được sắp xếp khác nhau. Vì vậy, tôi quyết định viết trình phân tích cú pháp của riêng mình. Tôi nghĩ rằng đây là cách hợp lý nhất để tiến hành như tôi đã được thông báo bởi các nhà cung cấp bên thứ ba rằng họ từng cuộn phần mềm phân tích cú pháp của riêng họ.

Cách tôi viết trình phân tích cú pháp là tôi giữ một bảng các mẫu dòng MICR. Mỗi lần tôi gặp một định dạng dòng MICR mới, tôi sẽ cập nhật bảng này. Trình phân tích cú pháp của tôi sẽ khớp với bất kỳ kiểm tra nào được quét đối với bảng này và nếu nó tìm thấy một kết quả phù hợp, nó sẽ sử dụng mẫu đó để phân tích các thông tin liên quan.

Tôi hy vọng trải nghiệm của mình và giải pháp mà tôi đưa ra cũng sẽ giúp những người gặp vấn đề tương tự.

Cảm ơn tất cả những người đã phản hồi và chúc may mắn.

+2

Bạn nên đánh dấu câu trả lời của chính mình là câu trả lời đúng nếu nó giải quyết được vấn đề của bạn. – Matthieu

+0

bạn có muốn chia sẻ cụm từ thông dụng của mình – Esen

+1

Đối với những người khác đang xem câu hỏi này, tôi cũng sẽ xem xét tài liệu của người đọc của bạn. Tùy thuộc vào thương hiệu và mô hình, bạn có thể làm cho nó để làm phân tích cú pháp này cho bạn và trở lại ở định dạng chuẩn. Một trong những tôi đã sử dụng (Magtek) đã có thể phân tích cú pháp tài khoản, định tuyến và kiểm tra số mà không có vấn đề, một khi tôi phát hiện ra nó không phải trả lại dữ liệu MICR nguyên. – Nathan

0

Đây cũng là câu trả lời đúng dựa trên nghiên cứu của tôi. Các mẫu MICR quá đa dạng để phân tích cú pháp một cách đáng tin cậy mà không cần có một tập hợp các mẫu đối sánh regex để lấy thông tin liên quan. Điều gì sẽ là tốt đẹp là để xem bộ sưu tập các mẫu regex bạn đã đưa ra với tên nhóm như:

<(?<checkNumber>[0-9\s]*)<[0-9\s]*:[0-9\s]*:.* 
1

Các mô hình cơ bản của một MICR:

xxxxxxxxxxx/rrrrrrrrr/ooooooooooo baaaaaaaaaab

trong đó 'x' là AuxOnUs, 'r' là số định tuyến, 'o' là OnUs, và 'a' là số tiền, với 'b' và '/' là các ký hiệu MICR đặc biệt.

Một dòng MICR tối thiểu chỉ là:

/rrrrrrrrr/ooooooooo

AuxOnUs thường chỉ được sử dụng bởi kiểm tra kinh doanh, và nó khá nhiều luôn có nghĩa là có một số serial.

Số định tuyến luôn phù hợp, đó là phần duy nhất của MICR là phổ quát.

Số tiền thường không được mã hóa trong MICR, nhưng đôi khi có.

OnUs là một phần khó khăn. Nó thường bao gồm số serial kiểm tra và tài khoản, nhưng mỗi ngân hàng xử lý nó một cách khác nhau. Thông thường số sê-ri sẽ là 4 chữ số, nhưng có thể là 5 hoặc nhiều hơn. Nếu có một trường AuxOnUs, bạn có thể chắc chắn OnUs chỉ là số tài khoản.

OnUs có thể chứa dấu cách và dấu gạch ngang. Sẽ tốt hơn nếu có một cách nhất quán mà họ bị phân chia, nhưng tôi đã thấy rất nhiều biến thể, tôi nghĩ tốt hơn là chỉ để nó như là một trường "OnUs" thay vì tách nó thành nối tiếp và tài khoản, trừ khi bạn ngân hàng thanh toán, trong trường hợp đó bạn nên biết định dạng séc của riêng bạn là gì.

-1

6 năm sau câu hỏi này ban đầu được hỏi và tôi đã xem qua câu hỏi này nhiều lần trong 2 tuần qua. Cuối cùng tôi đã tìm thấy một giải pháp ACTUAL và cách phân tích cú pháp dòng MICR đúng cách. Tôi đã viết một số mã để làm như vậy và nó hoạt động trên 99,9% kiểm tra tôi đã quét này đến nay, vì vậy tôi phải chia sẻ và đảm bảo mọi người hiểu cách này nên được thực hiện.

Trong 11 năm tôi đã thực hiện công việc này. Chúng tôi luôn sử dụng máy quét kiểm tra Magtek. Gần đây tôi quyết định chuyển sang máy quét hình ảnh để chúng tôi có thể quét tất cả các kiểm tra của chúng tôi. Tôi đã đi với máy quét kiểm tra Panini. Thật không may, API của họ không phá vỡ dòng MICR, nhưng máy quét Magtek của chúng tôi có thể lập trình để cung cấp cho chúng tôi bất cứ điều gì chúng tôi muốn. Tôi đã tạo một chuỗi cơ bản có thể được kết hợp với mẫu mỗi lần. Nó sẽ luôn xuất hiện dưới dạng: <aaaaaaaaa/bbbbbbbb/ccc> trong đó số tuyến là số b, và c là số kiểm tra. Hơn và hơn tôi cứ tự hỏi làm thế nào các máy quét, chỉ cần một thiết bị nối tiếp đơn giản, có thể con số nó ra và làm cho nó đúng MỌI THỜI GIAN THỜI GIAN trong một thập kỷ.

Tôi bắt đầu bằng cách sử dụng câu trả lời của riêng Patrick, sắp xếp, để xây dựng một bảng các mẫu MICR mà tôi chưa từng thấy trước đây. Vấn đề là tôi chạy đến một điểm mà một mô hình sẽ có được một kết hợp chặt chẽ với kiểm tra khác và dữ liệu sẽ được tắt một chút. Sau đó tôi đã thử làm nó dựa trên số tuyến đường cho đến khi tôi chạy qua hai kiểm tra từ BofA có số tuyến đường giống hệt nhau và các dòng MICR hoàn toàn khác nhau. Tôi đã rất thất vọng khi mặt tôi gặp bàn làm tôi thất vọng.

Sau nhiều nghiên cứu thêm, cách thích hợp là phân tích từ trái sang phải của dòng MICR. Các dòng MICR là từ trái sang phải, và tất nhiên, trường cho chúng ta khó khăn nhất là trường trên chúng ta. Tất cả các đoạn mã mẫu của tôi là mã C#.

Bắt đầu bằng cách lặp qua chuỗi ngược:

for (int i = micr.Length - 1; i >= 0; i--) 

Đánh giá mỗi nhân vật khi bạn lặp. Nếu ký tự đầu tiên của bạn là ký tự số tiền, đó là kiểm tra doanh nghiệp. Đọc cho đến khi bạn nhận được một ký tự số lượng khác, sau đó lưu giá trị đó. Nếu ký tự tiếp theo là biểu tượng trên chúng tôi, giả sử rằng số kiểm tra nằm ở phía xa bên trái của trường trên chúng tôi. Nếu ký tự tiếp theo là một chữ số, hãy tiếp tục đọc và điền vào bộ đệm (HÃY NHỚ BẠN ĐANG LÀM VIỆC TRỞ LẠI!) Với các chữ số cho đến khi bạn tiếp cận ký tự on-us. Nếu bộ đệm của bạn chỉ chứa chữ số, đó là số kiểm tra của bạn.Nếu nó trống, chỉ cần di chuyển và thu thập toàn bộ trường trên chúng ta trong bộ đệm cho đến khi bạn đạt đến ký tự chuyển tiếp. Khi bạn đạt đến ký tự quá cảnh, hãy tiếp tục đọc và điền vào bộ đệm của bạn cho đến khi bạn đạt đến ký tự quá cảnh tiếp theo. Bộ đệm của bạn hiện là số định tuyến của bạn. Nếu đó là kiểm tra doanh nghiệp, bạn vẫn có nhiều ký tự hơn để đọc. Tiếp tục đọc cho đến khi bạn đạt được ANOTHER nhân vật trên chúng ta. Bây giờ bạn đã đến trường phụ trợ trên chúng tôi, đây phải là số kiểm tra. Đọc cho đến khi bạn đạt đến ký tự tiếp theo trên chúng ta và đó sẽ là phần cuối của chuỗi của bạn. Bây giờ bạn có số kiểm tra của mình.

Bây giờ, hãy xem giá trị bạn đã loại bỏ khỏi trường thông thường trên chúng tôi. Nếu bạn có số séc, thì đó là số tài khoản của bạn. Nếu bạn KHÔNG có số kiểm tra, thì bạn nên chia nhỏ trường trên chúng ta bằng dấu cách và giả sử rằng số thiết lập bên trái của bạn (phần tử mảng 0) là số kiểm tra của bạn. BAO GIỜ, nếu sau khi chia nhỏ theo không gian, bạn chỉ có MỘT phần tử trong mảng, điều đó có nghĩa là trường trên chúng tôi có thể chứa dấu gạch ngang tách các mục. Tách trường trên chúng ta bằng dấu gạch ngang và giả sử rằng phần tử mảng bên trái của bạn là số kiểm tra và phần còn lại là số tài khoản của bạn. Tôi đã thấy một số có 3 dấu gạch ngang trong trường trên chúng tôi, như sau: nnnn-1234-56-7, trong đó nnnn là số kiểm tra và số còn lại là số tài khoản.

Khi bạn đã có số tài khoản của mình tách biệt với số kiểm tra, hãy xóa bất kỳ ký tự linh tinh nào (dấu cách, dấu gạch ngang, v.v ...) khỏi nó và bạn đã hoàn tất.

Đây là giải pháp cho tất cả các vấn đề MICR của tôi. Hy vọng nó giúp người khác.

Cảm ơn đi, một phần, đến tài liệu này: http://www.transact-tech.com/uploads/printers/files/100-9094-Rev-C-MICR-Programmers-Guide.pdf

Các vấn đề liên quan