Cùng với sự cách tân và phát triển của kỷ nguyên 4.0, các sản phẩm công nghệ ngày càng được vận dụng phổ biến, trong những số ấy phải kể tới phần mềm thừa nhận dạng chữ giờ đồng hồ việt (hay phần mềm nhận dạng văn bản viết tay OCR).

Bạn đang xem: Phần mềm nhận dạng chữ viết tay tiếng việt


Công nghệ này vẫn này càng được áp dụng phổ biến, đa dạng chủng loại đến nhiều nghành của đời sống: tự văn bạn dạng cho mang lại hình ảnh, những thông tin đều được trao dạng trích xuất chuyên nghiệp.

Thực tế về nhận dạng chữ viết tay

Mỗi ngày, các cơ quan đơn vị nước dìm được không hề ít văn bạn dạng cần nhập lại vào phần mềm.

Các đơn vị ngân hàng – bảo hiểm – Viễn thông có rất nhiều thông tin người sử dụng cần đề nghị xử lý.

Các đơn vị phân tích thị trường có trọng lượng lớn phiếu điều tra khảo sát cần nhập lại.

Trường học nên xử lý phiếu dự thi của thí sinh.

Doanh nghiệp phải quản lý hồ sơ của fan lao động.

Tất cả những thông tin này hầu hết yêu cầu yêu cầu nhập lại để đưa vào hệ thống của tổ chức. Tuy nhiên, việc nhập bằng tay các ngôi trường thông tin, gõ văn phiên bản với nhiều loại form khác biệt công khiến tốn thời gian, công sức, thậm chí là tiềm ẩn nhiều nguy cơ sai sót.

Đứng trước vấn đề nan giải liên quan đến sự việc nhập liệu này, cần phải có một phần mềm thừa nhận dạng chữ viết giờ đồng hồ việt hay một giải pháp tương từ bỏ để xử lý bài toán gai góc trên.

Hình hình ảnh minh họa: yếu tố hoàn cảnh vấn đề lưu trữ tài liệu bằng văn bản viết tay

Giới thiệu giải pháp nhận dạng cùng trích xuất tin tức IONE

Xuất phát từ thực trạng trên, technology nhận dạng với trích xuất thông tin auto IONE sẽ ra đời. Với công nghệ hiện đại và tác dụng thông minh IONE được xem như như một phần mềm nhận dạng chữ viết tay rất có thể giải quyết các vấn đề về thừa nhận dạng cùng trích xuất tin tức tài liệu, hình ảnh, từ kia giúp bớt thiểu các bước nhập liệu bằng tay thủ công và số đông sai xót không đáng bao gồm trong quá trình nhập liệu.

Công nghệ IONE là technology nhận dạng văn bản viết tay và bóc tách thông tin thông minh. Kiến trúc technology như sau:

Hình hình ảnh minh họa: technology IONE – công nghệ nhận dạng văn bản viết tay thông minh

Ảnh đầu vào qua các modules, api của công nghê ̣IONE đã cho ra dữ liêụ văn bản, metadata để giữ trữ hoăc̣ tích hơp̣ vào các ứng duṇg khác. Các nhân kiệt của công nghê ̣IONE bao gồm:

Nhận dạng toàn văn.

Nhận dạng theo biểu mẫu.

Tạo tệp tin pdf/a (file pdf tất cả thêm lớp text giúp tìm kiếm trực tiếp trên file).

Bóc tách bóc thông tin Văn bạn dạng hành chính.

Bóc bóc thông tin chứng tỏ nhân dân.

Bóc bóc tách thông tin Sổ đỏ, thích hợp đồng, Tờ trình.

Bóc tách thông tin Phiếu khảo sát, Phiếu dự thi vào ĐHQGHN.

Bóc bóc tách thông tin các biểu chủng loại ngân hàng.

Số hóa giản đồ.

Nhận dạng lốt tick.

Nhận dạng số viết tay

Tính năng của phần mềm nhận dạng chữ viết tay giờ việt IONE

Nhận dạng tin tức văn bản hành chính

IONE cung cấp giải pháp trích xuất trường thông tin cần mang từ văn bạn dạng hành bao gồm như tờ trình, công văn, quyết định,… như: cơ sở ban hành, trích yếu đuối nội dung, ngày tháng, số ký kết hiệu, khu vực nhận, fan ký… để mang vào phần mềm làm chủ văn bạn dạng hoặc phiếu trình. IONE cung cấp phương án nhận dạng toàn văn (fulltext) nhằm trích xuất nội dung vận dụng lập chỉ mục hoặc ứng dụng cho những nghiệp vụ; sinh sản file pdfsearchable sẽ giúp đỡ người cần sử dụng tìm kiếm ngôn từ trực tiếp tức thì trên tệp tin PDF.

Bóc bóc thông tin chứng tỏ thư nhân dân

Đối với ngân hàng công ty bảo hiểm hay đơn vị chức năng viễn thông, phần mềm thừa nhận dạng chữ giờ đồng hồ việt cung cấp phương án nhận dạng cùng trích xuất thông tin từ bản scan chứng tỏ nhân dân một cách dễ ợt theo những trường như tên, ngày tháng năm sinh, quê quán, số CMT, ngày cấp… góp việc khai thác thông tin cấp tốc chóng, thiết yếu xác, tiết kiệm ngân sách thời gian. Cùng tham khảo giải pháp bóc tách tách minh chứng thư của IONE.

Bóc tách thông tin sổ đỏ

Các ứng dụng như IONE đang cung cấp chiến thuật nhận dạng cùng trích xuất thông tin số đỏ từ động. Người dùng không cần thiết phải nhập tay các trường thông tin mà chỉ việc đưa phiên bản scan vào là thông tin tự động được tách bóc tách để đưa vào khối hệ thống lưu trữ và phần mềm ứng dụng.

Bóc bóc thông tin phiếu khảo sát, dự thi

Một ứng dụng khác của phần mềm dấn dạng chữ giờ việt và xử lý biểu mẫu là Bóc tách tin tức sinh viên dự thi vào ĐHQG. Đầu vào là phiếu dự thi có dán ảnh, in tin tức của thí sinh như SBD, Ho ̣tên, Số CMND. Module đã cho ra danh sách các thí sinh có ảnh và thông tin nêu trên sinh hoạt dạng văn bản (text). Technology cũng dấn dạng, xử trí và tách tách tin tức phiếu điều tra khảo sát qua technology nhận dạng dấu vết giúp giảm bớt khó khăn trong quy trình nhập liệu. 

Bạn có thể tham khảo thêm một số chiến thuật khác của IONE tại đây

Ưu điểm của giải pháp:

Nhận dạng tiếng Việt đúng mực từ 90 cho 98%.

Số hóa giản đồ, hình ảnh đạt độ chính xác > 90%.

Xử lý tuy nhiên song, đạt ngưỡng 6s/trang.

Bóc tách bóc dữ liệu tự động hóa không dựa vào mẫu tài liệu.

Sẵn sàng tích hợp với các hệ thống của khách hàng.

Cơ chế học trang bị giúp hệ thống tự động hóa nâng cao độ bao gồm xác.

Lợi ích của công nghệ IONE

Nhận dạng và bóc tách thông tin lập cập với lượng lớn tài liệu trong thời gian ngắn

IONE có công dụng nhận dạng cùng trích xuất thông tin gấp rút lượng béo tài liệu trong thời gian ngắn với cơ chế xử lí tuy nhiên song dữ liệu, hiệu xuất up load 6s/trang cùng nhận dạng văn bản viết tay chính xác đến 90%

Tiết kiệm thời hạn nhập liệu thủ công, bớt thiều nhân lực nhập liệu

Thay vì chưng nhập tay thông tin từ khá nhiều loại form, biểu mẫu, làm mất quá nhiều thời gian nhập liệu, IONE mang đến giải pháp bóc tách tin tức không phụ thuộc vào biểu mẫu, góp tiết kiệm thời hạn nhập liệu, sút thiểu nhân lực cải thiện năng suất với hiệu quả các bước lên đến buổi tối đa. Lân cận đó, tệp tin pdfsearchable của IONE giúp người dùng tìm tìm nội dung mau lẹ và trực tiếp ngay lập tức trên tệp tin PDF, góp rút ngắn thời hạn xử lí dữ liệu.

Đảm bảo độ đúng chuẩn so với tài liệu gốc

Cơ chế học lắp thêm của IONE góp hệ thống tự động nâng cao độ chính xác. Bên cạnh ra, hệ thống này còn không bị giới hạn về ngôn ngữ, rất có thể nhận dạng cùng trích xuất thông tin với mọi tài liệu của nước ngoài và Việt Nam. Đặc biệt là tài năng nhận dạng giờ đồng hồ việt của bao gồm độ đúng đắn lên mang đến 98%.

Công nghệ nhận dạng và tách tách thông tin tự động hóa IONE hiện tại đang được cải tiến và phát triển bởi doanh nghiệp Cổ phần dịch vụ thương mại và phát triển công nghệ FSI. Technology đã và đang rất được triển khai trong vô số dự án trọng điểm, tất cả quy mô lớn trong phạm vị cả nước.

Giới thiệu

Nhận dạng chữ viết tay là một trong những bài toán siêu thú vị, với nguồn vào là một hình ảnh chứa chữ và áp ra output là chữ đựng trong ảnh đó. Câu hỏi này tương đối khó so với chữ viết tay, cùng với viết bộ dữ liệu vn tương đối thi thoảng có. Lần này, bản thân sẽ phân tách sẽ phía tiếp cận mà team mình đã sử dụng trong cuộc thi do Cinnamon tổ chức, nhờ các cách sử lý hợp lý và phải chăng mà team mình đã đoạt đượt top 1 trong phase 1 của hội thi này. Dẫu vậy mà cuộc thì này tổ chức cũng nhiều năm hơi, làm mọi thí sinh hơi nản. (tầm 2 tháng với phần thi + bootcamp). Sơ qua về một chút ít ứng dụng của OCR. Mình thấy có 2 áp dụng khá danh tiếng là Google Translate, với Got
It của Hùng Trần.

Dữ liệu

Dữ liệu của vấn đề này là chỉ có text-line không tồn tại scene text đề nghị vấn đề đơn giản dễ dàng hơn các so với việc phải detect được chữ trên ảnh có background như quanh đó thực tế.

*

Chuẩn bị dữ liệu

Đối với văn bản scan thì việc tiền cách xử trí như remove noise,background là cực kỳ quan trọng và ảnh hưởng khá nhiểu cho độ chính xác của bài toán. Để remove noise với background thì các chúng ta cũng có thể sử dụng kmean nhằm cluster bức ảnh ra 2 màu chủ yếu trắng và đen rồi sau đó binary ảnh dựa vào công dụng cluster. Trong quá trình xử lý các bạn có thể sử dụng tool này nhé


*

Mô hình

Dữ liệu đã chuẩn bị chấm dứt thì đến phần model. Môt trong những mô hình được hay sử dụng là CRNN, tuy vậy mô hình mình áp dụng thêm vào hình thức attention được cho phép model chắt lọc vùng ảnh mong ý muốn để phát hình thành text. Phương pháp attention được sử dụng không ít trong machine translation. Mình sẽ sở hữu được một bài xích về lý lẽ này,tuy nhiên các chúng ta cũng có thể tham khảo trên đây.


*

Đối tài liệu là ảnh thì chúng ta sẽ dùng quy mô CNN nhằm extract feature. Ở đây, mình cần sử dụng VGG16 nhé. Trong model hình này, chúng ta nên lưu ý số tầng pooling, tôi chỉ sử dụng 4 tầng pooling của VGG16, từng tầng pooling đang có kích cỡ 2x2,đồng thời bỏ hết toàn bộ các tầng fully connected cuối cùng, cho nên output của VGG16 là 1 trong những tập các feature maps, mỗi pixel trên feature khớp ứng vùng 16x16 trên bức ảnh đầu vào.


*

Việc chọn kích thước và số tầng pooling này cực kỳ quan trọng vị nó ảnh hưởng đến số px mà từng timestep thấy được được.Nếu các bạn chọn kính thước tầng pooling kích thước quá lớn sẽ dần đến việc một step sẽ bao gồm nhiểũ chữ trong hình ảnh do đó quy mô sẽ không sở hữu và nhận dạng được.


base_model = applications.VGG16(weights="imagenet", include_top=False)
Với ảnh đầu vào có kích cỡ 1280x60 thì đầu ra của vgg16 là (nmaps, w, h) = …, mỗi dòng khớp ứng với chiều w thì tương xứng với một timstep đến tầng LSTM.

Visual attention

Với mô hình CRNN, hiệu quả của vgg được truyền thẳng vào quy mô LSTM, tuy nhiên, cùng với thực nghiệp của chính bản thân mình khi stack thêm một tờ attention trung tâm tầng vgg cùng LSTM vẫn cho công dụng nhận dạng tốt hơn. Attention có thể chấp nhận được model của bọn họ được dễ chịu và thoải mái lựa chọn phối kết hợp thông tin giữa các timestep không giống nhau để tổng hợp lại cùng sử dụng đặc trưng tổng hợp này làm đầu vào để thừa nhận dạng chữ cái. Cụ thể vector context được tổng đúng theo tại mỗi timestep như sau:


Đầu tiên ta yêu cầu tính e cùng với e chính là output của Aligment Model, một dạng feedforward nets với đầu vào là trạng thái của networks hiện tại


Sau kia ta tính attention score tại mỗi timestep bởi hàm softmax vì bọn họ mong mong muốn tổng attention score bằng 1


Cuối cùng, context vector là weighted average của trạng thái ẩn cùng với attention score.


def attention_rnn(inputs): # inputs.shape = (batch_size, time_steps, input_dim) input_dim = int(inputs.shape<2>) timestep = int(inputs.shape<1>) a = Permute((2, 1))(inputs) a = Dense(timestep, activation="softmax")(a) // Alignment model + Softmax a = Lambda(lambda x: K.mean(x, axis=1), name="dim_reduction")(a) a = Repeat
Vector(input_dim)(a) a_probs = Permute((2, 1), name="attention_vec")(a) output_attention_mul = multiply(, name="attention_mul") // Weighted Average return output_attention_mul

LSTM

Với các vector context được tính tại tầng Attention được thực hiện là đầu vào cho mô hình LSTM. Tại mỗi timestep, chúng ta dự đoán trường đoản cú tại thời điểm đó. Các timestep liên tục hoàn toàn có thể dữ đoán cùng một từ.


*

Connectionist Temporal Classification loss

Với tài liệu huấn luyện, bọn họ có nhãn là 1 đoạn text khớp ứng với chữ vào bức ảnh đó. Bọn họ không tất cả nhãn rõ ràng tại mỗi thời điểm từ lộ diện là gì tương xứng với timestep trong mô hình LSTM, bởi đó chúng ta không thể dùng cross entropy loss nhằm tính độ lỗi mà yêu cầu dùng CTC loss trong vấn đề bài.

Encoding ground truth

CTC loss xử lý vấn đề này theo phong cách rất là thông minh, nuốm thể bọn họ sẽ thử toàn bộ các alignment của ground truth cùng tính score của tổng toàn bộ alignment. Alignment của ground truth được phát sinh bằng phương pháp thêm blank token (-) và lặp lại bất kì kí tự như thế nào trong ground truth.

Ví dụ ta bao gồm ground truth là: sun và có mô hình LSTM của chúng ta dự toán 4 timesteps. Thì những alignment đúng của ground truth là:

sun -> -sun, s-un, su-n, sun- sun -> suun, ssun, sunn

Đới với hầu hết từ có 2 kí tự tiếp tục giống nhau, họ sẽ thêm blank token để tại giữa để tạo thành một alignment đúng. Ví dụ với kí từ too. Những alignment đúng hoàn toàn có thể là:

too -> -to-o, tto-o

Nhưng ko thể là tooo.

Decoding text

Mô hình của chúng ta sẽ học để predict hầu như alignment trên, sau đó họ phải decode để mang ra chuỗi dự đoán cuối cùng bằng phương pháp gộp đông đảo kí trường đoản cú lặp lại liên tục nhau thành một kí trường đoản cú và kế tiếp xóa hết tất cả blank token.Ví dụ với alignment tto-o thì sau khoản thời gian decode họ sẽ gồm too bằng phương pháp gộp 2 kí tự ‘t’ lại với nhau với xóa ‘-‘.

Tính CTC loss

Với từng grouth truth bọn họ có nhiều alignment, bất kỳ alignment làm sao được dự kiến đều là một dự đoán đúng. Vì đó, hàm loss ta nên tối ưu đó là tổng của toàn bộ các alignment.


*

Với từ sun, ta tất cả tổng 7 alignments đúng sống trên. Vì thế theo model, xác suất từ sun lộ diện là


p("sun") = p("-sun") + p("s-un") + p("su-n") + p("sun-") + p("ssun") + p("suun") + p("sunn") = 0.2186

Hàm loss của bọn họ sẽ là 1 trong những - p(‘sun’)

Word Beam Search

Chúng ta hoàn toàn có thể lựa lựa chọn câu được vạc sinh bởi best path, hoặc có thể bằng word beam search. Đối cùng với best path, tại từng thời điểm họ lựa lựa chọn từ có xác suất lớn nhất. Tuy nhiên đối với cách này,câu được phân phát sinh có thể không cần là câu có phần trăm cao nhất. Cầm cố vào đó,chúng ta hoàn toàn có thể sử dụng beam search để duy trì tại N câu có xác suất lớn theo theo best path rồi ở đầu cuối câu được lựa chọn sẽ là câu gồm sác xuất tối đa trong N câu đó.

Đối với việc OCR, từng timestep đã phát sinh một kí tự vì vậy từ được phạt sinh có thể không phía trong từ điển. Đối trường trường đúng theo này, chúng ta cũng có thể sử dụng một số phương phát post process để cách xử trí câu được phân phát sinh. Đơn giản, họ sử dụng edit distance nhằm so sánh khoảng cách 2 từ, và thay thế từ không phía trong từ điển bằng từ gồm edit distance phải chăng nhất. Hay tinh vi hơn, chúng ta cũng có thể dùng language model để sửa lỗi câu được phát sinh.Đối với python/tensorflow, các bạn cũng có thể dùng tủ sách sau để phát sinh câu từ bỏ model

OCR Data Augmentation

Trong hội thi này, tập dữ liệu mà BTC hỗ trợ chỉ có 2000 mẫu, cho nên vì thế để đào tạo model bọn họ cần sử dụng một số phương pháp để tăng dữ liệu.

luân phiên hay dịch chuyển một ít bức ảnh. Sử dụng elastic transform Random erasor 1 phần của bức ảnh.

Xem thêm: Mang thai lần đầu mẹ bầu cầng lưu ý những gì?


Kết quả

Mình train 5 folds ,mỗi fold mất khoảng 8 tiếng nhằm chạy. Sau khi chay khoảng chừng 70-80 epochs thì WER khoảng tầm 0.1x. Theo bản thân thấy thì tác dụng tương đối chính xác. Dường như bộ dataset hơi dễ :))


Download dataset

Bộ dataset này là của Cinnamon. Mình không chịu trách nhiệm khi các bạn sử dụng không nên mục đích.