You are on page 1of 10

Đại học Bách Khoa Hà Nội

Trường Công nghệ thông tin và Truyền thông

____________________

Báo cáo bài tập lớn Project I


Đề tài: Xây dựng API nhận diện, chuẩn hóa và trích xuất
thông tin từ chứng minh thư và căn cước công dân.

Giáo viên hướng dẫn: TS. Ban Hà Bằng

Nhóm sinh viên thực hiện:


Lê Công Đăng Duy 20194037

Lê Văn Đức 20194022

Đặng Văn Quang Hà 20194038

Hà Nội, 01/2022
GVHD: TS.Ban Hà Bằng

Lời cảm ơn
Lời đầu tiên, chúng em xin được gửi lời cảm ơn chân thành đến TS.Ban
Hà Bằng. Trong quá trình hoạt động thực hiện Project I, chúng em đã luôn
nhận được sự quan tâm, sát sao và những hướng dẫn rất tận tình và tâm
huyết đến từ thầy. Thầy đã ân cần chỉ ra những khuyết điểm và đưa ra nhiều
giải pháp cho chúng em qua từng buổi họp, từ đó giúp chúng em dần hoàn
thiện Project này. Thầy đã giúp chúng em giải quyết được nhiều vấn đề mà
chúng em còn vướng bận, giúp chúng em đoàn kết hơn và từ đó có được nền
tảng vững chắc để làm việc nhóm một cách hiệu quả.

Tiếp đó em xin được gửi lời cảm ơn đến anh Tùng và anh Lâm. Với
kinh nghiệm và những kiến thức của mình, hai anh đã giải đáp rất nhiều thắc
mắc của chúng em, đồng thời cung cấp cho chúng em những tài liệu hay,
những giải pháp mới mà chúng em chưa nghĩ đến.

Một lần nữa chúng em xin chân thành cảm ơn thầy và hai anh, thông
qua môn học Project I lần này, chúng em đã học được nhiều kiến thức mới,
được tiếp cận với nhiều phương pháp, công cụ mới. Đây cũng là lần đầu
chúng em thực hiện Project nên trong quá trình hoàn thành còn nhiều thiếu
sót, rất mong nhận được những nhận xét, ý kiến đóng góp từ cô để chúng em
có thể hoàn thiện sản phẩm này hơn.

Nhóm 3 : Project I 1
GVHD: TS.Ban Hà Bằng

Mục lục
Danh mục hình ảnh ...................................................................................................3
1 Giới thiệu và mô tả về bài toán. ...........................................................................4
1.1 Lý do chọn đề tài. .............................................................................................4
1.2 Mục tiêu của đề tài. ..........................................................................................5
1.3 Phương pháp tiếp cận. ...................................................................................5
2 Các phương pháp được dùng để giải quyết bài toán. ..................................6
2.1 Cơ sở lý thuyết. ................................................................................................6
2.1.1 Computer Vision. ..................................................................... 6
2.1.2 Artificial neural network (ANN). ................................................ 7
2.1.3 Các hàm kích hoạt – activation function. .................................. 8
2.1.4 Convolutional Neural Network. ................................................. 9
2.1.5 Phương pháp training một mạng nơ ron. ............................... 12
2.1.6 Optical Character Recognition (OCR). .................................... 13
2.2 Các thử nghiệm ban đầu. ............................................................................ 14
2.2.1 Bài toán 1: Phân loại giấy tờ. ................................................. 14
2.2.2 Bài toán 2: Chuẩn hóa giấy tờ. ............................................... 16
2.2.3 Bài toán 3: Detect vùng dữ liệu và lấy thông tin. ..................... 17
2.3 Sản phẩm cuối cùng..................................................................................... 20
3 Kết luận và định hướng phát triển. .................................................................. 21
3.1 Kết quả đạt được. ......................................................................................... 21
3.2 Các khó khăn.................................................................................................. 21
3.3 Định hướng phát triển. ................................................................................ 22
Tài liệu tham khảo....................................................................................................... 23
Phân chia công việc ................................................................................................... 24

Nhóm 3 : Project I 2
GVHD: TS.Ban Hà Bằng

Danh mục hình ảnh


Hình 1: Trang đăng ký tuyển sinh HUST......................................................................4
Hình 2: Ví dụ về Convolution layer................................................................................9
Hình 3: Ví dụ về Convoled Feature ............................................................................ 10
Hình 4. Ví dụ về Max Pooling...................................................................................... 11
Hình 5 Fully connected layer ....................................................................................... 11
Hình 6: Tesseract OCR ................................................................................................ 13
Hình 7 Cấu trúc mô hình mạng CNN ......................................................................... 15
Hình 8: Ví dụ về lấy các trường CCCD ..................................................................... 17
Hình 9: Vị trí các trường trong CCCD ........................................................................ 18
Hình 10: Vị trí các trường trong CMT ........................................................................ 18
Hình 11: Vị trí các trường trong CCCD...................................................................... 18
Hình 12: Ảnh CCCD gắn chip ..................................................................................... 19
Hình 13: Ảnh kết quả test ............................................................................................ 19
Hình 14: Ví dụ hiển thị thông tin trên giao diện ........................................................ 20
Hình 15: Ví dụ hiển thị thông tin trên giao diện web................................................ 20

Nhóm 3 : Project I 3
GVHD: TS.Ban Hà Bằng

1 Giới thiệu và mô tả về bài toán.

1.1 Lý do chọn đề tài.


Trong những năm gần đây, với sự bùng nổ của công nghệ, đi kèm với đó là
sự phát triển mạnh mẽ của trí tuệ nhân tạo, máy móc đang dần có thể thay thế con
người trong nhiều lĩnh vực. Ứng dụng của nó trải khắp ở mọi nơi. Đi kèm với trí tuệ
nhân tạo không thể không nhắc đến thị giác máy tính.

Trong thời điểm dịch bệnh ngày càng căng thẳng, việc hạn chế tiếp xúc là
điều tất yếu. Đây là lúc các công cụ trên nền tảng số phát huy sức mạnh của mình.
Các công việc trao đổi thông tin, mua sắm đều được khuyến khích thực hiện qua
internet, nhằm đảm bảo các quy định về giãn cách trong thời kì dịch bệnh. Để thuận
tiện cho các công việc cần xác thực danh tính, cụ thể là các công việc cần đến căn
cước công dân, chứng minh thư như đăng kí tuyển sinh, đăng kí tài khoản ngân
hàng,….., các tổ chức dần chuyển sang hoạt động online qua các form đăng kí trên
web.

Ví dụ ở đây là hệ thống đăng kí tuyển sinh của Trường Đại học Bách Khoa
Hà Nội:

Hình 1: Trang đăng ký tuyển sinh HUST

Trong giao diện trên, ngoài việc phải chụp và gửi lại căn cước công dân hoặc
là chứng minh thư để xác thực, người đăng kí còn phải điền các trường thông tin cá

Nhóm 3 : Project I 4
GVHD: TS.Ban Hà Bằng

nhân. Việc này có thể dẫn đến xung đột do người dùng có thể điền sai thông tin mà
không để ý, dẫn đến sai khác so với trên giấy tờ. Đồng thời cũng tốn thêm thời gian
của người đăng kí. Vì vậy giải pháp ở đây là tích hợp một module cho phép đọc
thông tin trên ảnh chụp giấy tờ đã cho và điền vào trong form đăng kí, giúp người
đăng kí tiết kiệm thời gian và cũng tránh được xung đột.

Xuất phát từ nhu cầu đó, nhóm chúng em quyết định chọn đề tài “Xây dựng
một API phân loại, chuẩn hóa, xác định và đọc các trường thông tin trên giấy tờ”.

1.2 Mục tiêu của đề tài.


Nhiệm vụ của đề tài này bao gồm ba bài toán con :
▪ Phân loại giấy tờ vào 3 lớp: Chứng minh thư / căn cước công dân / căn
cước công dân gắn chip.
▪ Chuẩn hóa giấy tờ: loại bỏ phần nền và đưa giấy tờ về form cho trước.
▪ Đọc và trả về thông tin trên giấy tờ đó.

Sau khi hoàn thành 3 modul trên sẽ cần phải ghép các modul lại với nhau đẻ
tạo thành một API hoàn chỉnh, cung cấp các phương thức riêng biệt để xử lý cho
từng bài toán.

1.3 Phương pháp tiếp cận.


Dữ liệu mà bài toán cần xử lý là ở dạng hình ảnh. Vì vậy, để giải quyết bài
toán này, nhóm phải tìm hiểu về các giải thuật, các thư viện sẵn có liên quan đến
lĩnh vực thị giác máy tính. Đồng thời, để thuận tiện sử dụng các thư viện có liên quan,
nhóm thống nhất sử dụng ngôn ngữ lập trình Python để triển khai chương trình.

Dữ liệu nhóm em thu thập được là bộ 700 ảnh ba loại giấy tờ: chứng minh
thư, căn cước công dân, căn cước công dân gắn chip lấy từ nhiều nguồn khác nhau,
chủ yếu trên các trang mạng xã hội. Với bộ dữ liệu trên, nhóm sẽ xây dựng các mô
hình để giải quyết các bài toán.

Nhóm 3 : Project I 5
GVHD: TS.Ban Hà Bằng

2 Các phương pháp được dùng để giải quyết bài toán.

2.1 Cơ sở lý thuyết.

2.1.1 Computer Vision.


Computer Vision hay Thị giác máy tính, là một Thị lĩnh vực trong Artificial
Intelligence và Computer Science nh ằm giúp máy tính có được khả năng nhìn và
hiểu giống như con người. Computer Vision mô phỏng lại thị giác của con người,
quá trình này bao gồm ba bước : thu nhận(mô phỏng mắt), xử lý ảnh kỹ thuật số (mô
phỏng vỏ não thị giác) , phân tích và nhận dạng các đặc trưng. Nói một cách khác,
Compter Vision là một phương pháp sử dụng dữ liệu hình ảnh và video để hiểu vê
thế giưới thực.
Thu nhận, bước đầu tiên trong quá trình mô phỏng thị giác con người, đây
có lẽ là lĩnh vực mà chúng ta đạt được nhiều thành công nhất. Trong những năm
gần đây công nghệ cảm biến quang học ngày càng phát triển mạnh, đem lại nhiều
kết quả vượt bậc. Gần như giờ đây việc sở hữu cho mình một chiếc camera với độ
phân giải cao là điều vô dùng dễ dàng. Các thiết bị smartphone cũng góp phần phổ
cập công nghệ này đến tay mọi người khi mà gần như chiếc điện thoại thông minh
nào cũng được trang bị camera. Điều này đã đem lại nền tảng rất tốt cho quá trình
nghiên cứu. Việc mọi người đều có thể dễ dàng chụp một tấm ảnh, tạo một đoạn
video và chia sẻ nó đến người khác đã đem lại một kho tàng dữ liệu vô cùng khổng
lồ, với sự đa dạng và phong phú về và nội dung.
Xử lý ảnh kỹ thuật số, máy tính không thể tự nhiên biết được ra các đặc
trưng của hình ảnh như cách mà con người nhìn thấy các sự vật hàng ngày, đối với
máy tính, dữ liệu ảnh chỉ đơn thuần là một dãy bit vô tri. Vậy nên người ta đã phải
nghiên cứu nhiều phương pháp sử dụng các phép biến đổi logic để máy tính có thể
lọc được các đặc trưng cần thiết của hình ảnh,. Bằng cách này máy tính có thể xác
định được các đặc trưng, liên kết chúng với nhau, và đem các đặc trưng này chuyển
qua quá trình phân tích. Ở lĩnh vực này vẫn còn nhiều hạn chế, chưa thể mô phỏng
chính xác như cách mà bộ não con người xử lý.
Phân tích, đây là phần khó nhất trong quá trình thu nhận thông tin. Với những
thành tựu từ lĩnh vực trí tuệ nhân tạo, con người đã có thể xây dựng các mô hình

Nhóm 3 : Project I 6
GVHD: TS.Ban Hà Bằng

nhận biết, phân loại, theo dõi vật thể,….Nhưng tất cả những thứ đó vẫn còn nhiều
hạn chế. Do kiến thức mà mô hình học được đều phụ thuộc vào dữ liệu đầu vào,
thêm vào đó là giới hạn về kích thước bộ nhớ, tốc độ xử lý nên chỉ có thể xây dựng
các mô hình với lượng kiến thức hạn chế, không thể phủ được toàn bộ các lĩnh vực.
Tuy còn nhiều hạn chế vậy nhưng với những kết quả hiện tại có thể nói là vô
cùng thành công. Computer Vision đã đem lại rất nhiều lợi ích cho con người. Ứng
dụng của nó trải khắp các lĩnh vực. Nhờ nó mà robot hiện nay đã có thể thay thế con
người trong những công việc nặng nhọc. Một vài ứng dụng khác có thể kể đến như
bảo mật khuôn mặt, nhận diện chữ viết,…
Tóm lại, Computer Vision vẫn đang còn trên đà phát triển, với những thành
công của hiện tại, ta có thể hy vọng về những ứng dụng tuyệt vời với sự đột phá của
công nghệ này trong tương lai.
2.1.2 Artificial neural network (ANN).
Mạng nơ-ron nhân tạo (ANN) bao gồm các lớp nút, trong đó chứa một lớp
đầu vào, một hoặc nhiều lớp ẩn và một lớp đầu ra. Mỗi nút hoặc mỗi nơ-ron nhân
tạo, kết nối với một nút khác và có trọng số (weights) và ngưỡng (threshold) liên
quan. Nếu đầu ra của bất kỳ một nút riêng lẻ nào vượt qua được giá trị ngưỡng chỉ
định, nút đó sẽ được kích hoạt, gửi dữ liệu đến lớp tiếp theo của mạng. Nếu không
thì không có dữ liệu nào được gửi đến nút tiếp theo của mạng.
Coi mỗi nút riêng lẻ như một mô hình hồi quy tuyến tính của chính nó, bao
gồm dữ liệu đầu vào, trọng số, độ lệch ( hoặc ngưỡng) và đầu ra. Công thức sẽ như
sau:

∑𝑚
𝑖 =1 𝑤𝑖 𝑥 𝑖 + 𝑏𝑖𝑎𝑠 = 𝑤1 𝑥 1 + 𝑤2 𝑥 2 + ⋯ + 𝑤𝑚 𝑥 𝑚 + 𝑏𝑖𝑎𝑠

Khi một lớp đầu vào được xác định, trọng số sẽ được chỉnh định. Các trọng
số này giúp xác định tầm quan trọng của bất kỳ biến nhất định nào, với những biến
đóng góp đáng kể hơn vào đầu ra so với các đầu ra khác. Tất cả các đầu vào sau
đó được nhân với trọng số tương ứng của chúng và sau đó được cộng lại. Sau đó,
đầu ra được chuyển qua một hàm kích hoạt, chức năng này sẽ xác định đầu ra . Nếu
đầu ra đó vượt qua một ngưỡng nhất định, nó sẽ “kích hoạt” nút, truyền dữ liệu đến
lớp tiếp theo trong mạng. Điều này dẫn đến kết quả đầu ra của một nút trở thành đầu
vào của nút tiếp theo.

Nhóm 3 : Project I 7
GVHD: TS.Ban Hà Bằng

Các giá trị của ma trận trọng số (weights) và giá trị của độ sai lệch (biases)
tương ứng với kiến trúc là mô hình (model).
Quá trình training model là quá trình xác định các giá trị của các weights và
biases. Các giá trị của chúng được khởi tạo với các giá trị ngẫu nhiên khi bắt đầu
training. Muốn training chúng ta cần phải định nghĩa bằng hàm lỗi của mạng. Lúc
này chúng ta sẽ nhắc đến hai giá trị đó là ground truth - tức là giá trị thực tế có trong
tập dữ liệu huấn luyện và predict_output là giá trị mà mô hình dự đoán. Lỗi được tính
bằng cách sử dụng hàm loss định nghĩa dựa trên sự khác nhau giữa hai giá trị này.
Dựa trên gíá trị của hàm loss được tính toán, các trọng số weights được điều chỉnh
tại mỗ bước trong quá trình training . Việc huân luyện mô hình được dừng lại khi lỗi
không thể giảm thêm được nữa. Quá trình training thực chất là tìm ra các đặc trưng
features trong dữ liệu đầu vào.
2.1.3 Các hàm kích hoạt – activation function.
Hàm kích hoạt được tạo ra với mục đích “bẻ gãy sự tuyến tính” của mạng nơ-
ron. Các hàm này có thể hiểu đơn giản như một bộ lọc để quyết định xem thông tin
có được qua mạng nơ-ron hay không. Trong quá trình hu ấn luyện mạng nơ-ron, các
hàm kích hoạt đóng vai trò quan trọng trong việc điều chỉnh độ dốc cảu đạo hàm.
Một số hàm kích hoạt hay dùng như sigmoid, tanh, relu, softmax, …

Sigmoid function: là một hàm rất thường dùng để chuyển đổi bất kỳ giá trị
nào về thành giá trị trong khoản 0…1. Có công thức toán học sau:
1
𝑓( 𝑥 ) =
1 + 𝑒 −𝑥
Tanh function: là hàm tiếp tuyến hyperbol, gần giống như hàm sigmoid. Hàm
tanh sẽ ánh xạ dữ liệu đầu vào về trong khoản từ -1 đến 1. Có công thức toán học
sau:
𝑒 𝑥 − 𝑒 −𝑥
𝑓( 𝑥 ) =
𝑒 𝑥 + 𝑒 −𝑥
Relu function: là hàm giữ nguyên những giá trị đầu vào lớn hơn 0 và những
giá trị đầu vào nhỏ hơn 0 thì coi là 0. Hàm này đã trở thành hàm kích hoạt mặc định
cho nhiều loại mạng nơ-ron vì mô hình sử dụng nó dễ huấn luyện hơn và có hiệu
suất cao hơn. Có công thức như sau:
𝑓 (𝑥 ) = max (0, 𝑥)

Nhóm 3 : Project I 8
GVHD: TS.Ban Hà Bằng

Softmax function: là một hàm kích hoạt, đưa các kết quả đầu ra bị ràng buộc
sao cho tổng của chúng bằng 1. Để làm được điều này thì hàm softmax chuyển đổi
giá trị đầu ra của mạng nơ-ron bằng cách chia cho tổng giá trị. Có thể thấy rõ hơn
qua công thức:
exp 𝑎𝑖
𝑠𝑜𝑓𝑡𝑚𝑎𝑥 𝑖 (𝑎) =
∑ exp 𝑎𝑖

2.1.4 Convolutional Neural Network.

CNN (Convolutional Neural Network) hay còn gọi là mạng nơ-ron tích chập,
là một trong những mô hình Deep Learning tiên tiến. CNN phân loại hình ảnh bằng
cách sử dụng các đặc trưng trên ảnh, từ đó phân loại hình ảnh vào các lớp dựa dựa
vào nguồn dữ liệu ảnh đã được học.

Convolution (hàm tích chập) : trong toán học hàm tích chập được định nghĩa
là một hàm tích phân đặc biệt với hai hàm số, cho ra một hàm thứ 3 thể hiện khuôn
dạng của một hàm được chỉnh sửa theo hàm còn lại.

Convolution Layer (lớp tích chập) cũng được lấy ý tưởng từ đó. Với dữ liệu
đầu vào là ma trận hình ảnh và một filter, đầu ra là một ma trận khác gọi là Feature
map. Lớp tích chập duy trì mối quan hệ giữa các điểm ảnh, từ đó giữa lại được các
đặc điểm trong ảnh.

Ví dụ: Xét ma trận 5 x 5 và bộ lọc 3 x 3 như hình

Hình 2: Ví dụ về Convolution layer

Nhóm 3 : Project I 9

You might also like