You are on page 1of 19

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM


KHOA ĐÀO TẠO CHẤT LƯỢNG CAO


TIỂU LUẬN CUỐI KỲ


MÔN:THỰC TẬP XỬ LÝ ẢNH

ĐỀ TÀI
PHÁT HIỆN VÀ TRÍCH XUẤT VĂN BẢN
VỚI OPEN CV VÀ OCR
GVHD: Ths. Nguyễn Duy Thảo
SVTH:
Nguyễn Lê Thanh Tú 19161186
Lê Hoài Lâm 20161220

TP. HCM, 20 tháng 05 năm 2023

1
BẢNG PHÂN CÔNG NHIỆM VỤ
STT Họ và tên Nhiệm vụ Kết quả
1 Nguyễn Lê Thanh Tú 19161186 - Trình bày Word Hoàn thành tốt
-Tìm hiểu lý thuyết
- Tìm hiểu và thực
hiện code
2 Lê Hoài Lâm 20161220 - Trình bày Word Hoàn thành tốt
-Tìm hiểu lý thuyết
- Tìm hiểu và thực
hiện code

Tên đề tài: Phát Hiện Và Trích Xuất Văn Bản Với Open CV Và OCR
Thời gian thực hiện: Từ khi nhận đề tài => Tuần 17

NHẬN XÉT CỦA GIẢNG VIÊN


................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
Tp. Hồ Chí Minh, ngày 20 tháng 5 năm 2023

Giảng viên hướng dẫn

ThS. Nguyễn Duy Thảo

2
MỤC LỤC


A. MỞ ĐẦU......................................................................................................1
1. Giới thiệu đề tài.......................................................................................1
2. Mục tiêu nghiên cứu...............................................................................1
3. Phương pháp nghiên cứu.......................................................................1
4. Bố cục đề tài............................................................................................1
B. NỘI DUNG..................................................................................................2
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT..............................................................2
1.1. Tổng quan về xử lý ảnh...................................................................2
1.1.1. Điểm ảnh.....................................................................................2
1.1.2. Phân loại ảnh..............................................................................2
1.1.3. Ảnh số.........................................................................................2
1.1.4. Ảnh xám.....................................................................................3
1.1.5. Lược đồ mức xám......................................................................3
1.1.6. Độ phân giải...............................................................................4
1.2. Hệ thống xử lý ảnh...........................................................................4
1.2.1. Thu nhận ảnh.............................................................................4
1.2.2. Tăng cường và khôi phục ảnh..................................................4
1.2.3. Biến đổi ảnh................................................................................4
1.2.4. Phân đoạn ảnh...........................................................................5
1.2.5. Biểu diễn ảnh..............................................................................5
1.2.6. Nén ảnh.......................................................................................5
CHƯƠNG 2: PHÁT HIỆN VÀ TRÍCH XUẤT VĂN BẢN VỚI OPEN
CV VÀ OCR....................................................................................................6
2.1. Khái niệm về OCR...............................................................................6
CHƯƠNG 3: PHẦN CODE PYCHARM...................................................10
CHƯƠNG 4: KẾT QUẢ..............................................................................12
C. KẾT LUẬN................................................................................................14
1. Kết luận..................................................................................................14
2. Hướng phát triển..................................................................................14
TÀI LIỆU THAM KHẢO................................................................................15

3
A. MỞ ĐẦU
1. Giới thiệu đề tài
Phát hiện và trích xuất văn bản là một nhiệm vụ cơ bản trong thị
giác máy tính và nhận dạng ký tự quang học (OCR). Nó bao gồm việc
xác định và nhận dạng các vùng chứa văn bản trong ảnh hoặc video, sau
đó trích xuất nội dung văn bản để tiếp tục xử lý hoặc phân tích. OpenCV
(Open Source Computer Vision Library) là một thư viện mã nguồn mở
phổ biến dùng cho các nhiệm vụ thị giác máy tính, trong khi OCR đề cập
đến công nghệ chuyển đổi hình ảnh chứa văn bản thành văn bản có thể
đọc được bởi máy tính.
2. Mục tiêu nghiên cứu
Có thể phát hiện và xác định chữ, font chữ, ngôn ngữ để có thể
nhìn nhận những chữ ghi trong văn bản, để có thể xuất được chữ trong ảnh
ra ngoài file text.txt văn bản có trong chương trình đã thực hiện một cách
đúng nhất có thể.
3. Phương pháp nghiên cứu
Sử dụng công cụ Tesseract để thực hiện hệ thống nhận dạng ký tự
và gói pytesseract python để tương tác với Tesseract trong python, để có
thể phát hiện và xuất được chữ có trong ảnh đúng và hợp lý nhất có thể.
4. Bố cục đề tài
Bố cục tiểu luận nhóm em gồm 4 phần:
 Chương 1: Cơ sở lý thuyết
 Chương 2: Phát hiện và trích xuất văn bản với OpenCV và OCR
 Chương 3: Phần code Pycharm
 Chương 4: Kết quả

4
B. NỘI DUNG
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. Tổng quan về xử lý ảnh
1.1.1. Điểm ảnh
Là đơn vị cơ bản nhất để tạo bước ảnh kỹ thuật số. Địa chỉ của điểm ảnh
được coi là một tọa độ (x, y). Một bức ảnh kỹ thuật số, có thể được tạo ra bằng
cách chụp hoặc bằng một phương pháp đồ họa nào khác, được tạo nên từ hàng
ngàn hoặc hàng triệu pixel riêng lẻ. Bức ảnh càng chứa nhiều pixel thì càng chi
tiết.
1.1.2. Phân loại ảnh
Mức xám của điểm ảnh là cường độ sáng, gán bằng một giá trị tại điểm
đó. Các mức ảnh xám thông thường: 16, 32, 64, 128, 256. Mức được sử dụng
thông dụng nhất là 256, tức là dùng 1byte để biểu diễn mức xám. Trong đó:
- Ảnh nhị phân: Là ảnh có 2 mức trắng và đen, chỉ có 2 giá trị 0 và 1 và chỉ
sử dụng 1 bit dữ liệu trên 1 điểm ảnh
- Ảnh xám: Là ảnh có hai màu đen, trắng (không chứa màu khác) với mức
xám ở các điểm ảnh có thể khác nhau.
- Ảnh màu: Là ảnh kết hợp của 3 màu cơ bản lại với nhau để tạo ra một thế
giới màu sinh động. Người ta thường dùng 3byte để mô tả mức màu, tức
là có khoảng 16,7 triệu mức màu.
1.1.3. Ảnh số
Ảnh số là tập hợp hữu hạn các điểm ảnh với mức xám phù hợp dùng để
mô tả ảnh gần với ảnh thật. Số điểm ảnh xác định độ phân giải của ảnh. Ảnh có
độ phân giải càng cao thì càng thể hiện rõ nét các đặt điểm của tấm hình càng
làm cho tấm ảnh trở nên thực và sắc nét hơn. Một hình ảnh là một tín hiệu hai
chiều, nó được xác định bởi hàm toán học f(x, y) trong đó x và y là hai tọa độ
theo chiều ngang và chiều dọc. Các giá trị của f(x, y) tại bất kỳ điểm nào là
cung cấp các giá trị điểm ảnh (pixel) tại điểm đó của một hình ảnh. Ảnh có thể
được biểu diễn theo một trong hai mô hình: Mô hình Vector hoặc mô hình
Raster.

5
- Mô hình Vector: Trong mô hình này, hướng vector của các điểm ảnh lân
cận được sử dụng để mã hóa và tái tạo lại hình ảnh ban đầu. Các ảnh
vector được thu nhận trực tiếp từ các thiết bị số hóa như Digitalize hoặc
được chuyển đổi từ các ảnh Raster thông qua các chương trình vector
hóa.
- Mô hình Raster: Ảnh được biểu diễn dưới dạng ma trận các điểm ảnh.
Tùy theo nhu cầu thực tế mà mỗi điểm ảnh có thể được biểu diễn bởi một
hay nhiều bit. Mô hình Raster thuận lợi cho việc thu nhận, hiển thị và in
ấn. Các ảnh được sử dụng trong phạm vi của đề tài này cũng là các ảnh
được biểu diễn theo mô hình Raster. Là mô hình biểu diễn ảnh thông
dụng nhất hiện nay.
1.1.4. Ảnh xám
Ảnh xám là ảnh chỉ có các màu sắc độ xám. Thực chất màu xám là màu
có các thành phần R, G, B trong hệ thống màu RGB có cùng cường độ. Tương
ứng với mỗi điểm ảnh sẽ có một mức xám xác định. Ảnh có nhiều mức xám
được gọi là ảnh đa cấp xám, ảnh chỉ có hai mức xám 0 và 1 được gọi là ảnh nhị
phân.
Mức xám là kết quả sự mã hóa tương ứng một cường độ sáng của mỗi
điểm ảnh với một giá trị số - kết quả của quá trình lượng tử hóa. Cách mã hóa
kinh điển thường dùng 16, 32 hay 64 mức. Mã hóa 256 mức là phổ dụng nhất vì
lý do kỹ thuật. Vì 28 =256 (0…255) nên với 256 mức mỗi pixel sẽ được mã hóa
bởi 8 bit.
1.1.5. Lược đồ mức xám
Lược đồ mức xám (Histogram) hay còn gọi là lược đồ xám của một ảnh
là một hàm cung cấp tần suất xuất hiện của mỗi mức xám (Grey level).
Lược đồ xám của một ảnh số có các mức xám trong khoảng [0, L-1] là
một hàm rời rạc p(rk)=nk /n. Trong đó nk là số pixel có mức xám thứ rk, n là
tổng số pixel của ảnh và k =1,2,3 …, L-1. Do đó p(rk) cho một xấp xỉ xác suất
xảy ra mức xám rk. Vẽ hàm này với tất cả các giá trị của k sẽ biểu diễn khái
6
quát sự xuất hiện các mức xám của một ảnh. Chúng ta cũng có thể thể hiện lược
đồ mức xám của ảnh thông qua tần suất xuất hiện mỗi mức xám qua hệ tọa độ
vuông góc Oxy. Trong đó, trục hoành biểu diễn số mức xám từ 0 đến N (số bit
của ảnh xám). Trục tung biểu diễn số pixel của mỗi mức xám.
1.1.6. Độ phân giải
Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh được ấn định trên
một ảnh số được hiển thị. Như trình bày ở trên, khoảng cách giữa các điểm ảnh
phải được chọn sao cho mắt người vẫn thấy được sự liên tục của ảnh. Việc lựa
chọn khoảng cách thích hợp tạo nên một mật độ phân bổ, đó chính là độ phân
giải và được phân bố theo trục x và y trong không gian hai chiều.
1.2. Hệ thống xử lý ảnh
1.2.1. Thu nhận ảnh
Ảnh có thể nhận qua camera màu hoặc trắng đen. Thường ảnh nhận qua
camera là ảnh tương tự (loại camera ống chuẩn CCIR với tần số 1/25, mỗi ảnh
25 dòng), cũng có loại camera đã số hóa (như loại CCD – Change Coupled
Device) là loại photodiot tạo cường độ sáng tại mỗi điểm ảnh. Camera thường
dùng là loại quét dòng, ảnh tạo ra có dạng hai chiều. Chất lượng ảnh thu nhận
được phụ thuộc vào thiết bị thu, vào môi trường (ánh sáng, phong cảnh).
1.2.2. Tăng cường và khôi phục ảnh
Tăng cường ảnh là bước quan trọng tạo tiền đề cho xử lý ảnh, gồm một
loạt các kỹ thuật như: Lọc độ tương phản, khử nhiễu, nổi màu... Khôi phục ảnh
là nhằm loại bỏ các suy giảm trong ảnh.
1.2.3. Biến đổi ảnh
Thuật ngữ biến đổi ảnh thường được dùng để nói tới một lớp các ma trận
đơn vị và các kỹ thuật dùng để biến đổi ảnh. Cũng như các tín hiệu một chiều
được biểu diễn bởi một chuỗi các hàm cơ sở, ảnh cũng có thể được biểu diễn
dưới một số chuỗi rời rạc các ma trận cơ sở gọi là ảnh cơ sở.
Phương trình ảnh cơ sở có dạng:
¿T
A∗¿k , 1=a k a l ¿

7
Với a k là cột thứ k của ma trận A. A là ma trận đơn vị. Có nghĩa là A A¿ T =1.
Các A∗¿k , 1 ¿ được định nghĩa ở trên với k, l = 0, 1, 2, …, N-1 là ảnh cơ sở. Có
nhiều loại biến đổi được dùng như:

- Biến đổi Fourier, Sin, Cosin, Hadamard….


- Tích Kronecker.
- Biến đổi KL (Krhumen loeve).
Do phải xử lý nhiều thông tin, các phép toán nhân và cộng trong khai triển là
quá lớn, nên các phép biến đổi trên nhằm giảm thứ nguyên của ảnh để việc xử
lý ảnh được hiệu quả hơn.
1.2.4. Phân đoạn ảnh
Phân vùng ảnh là tách một ảnh ban đầu vào thành các vùng thành phần để
biểu diễn phân tích, nhận diện ảnh. Ví dụ: để nhận dạng chữ (hoặc mã vạch)
trên phong bì thư cho mục đích phân loại bưu phẩm, cần chia các câu chữ về địa
chỉ hoặc tên người thành các từ, các chữ, các số (hoặc các vạch) riêng biệt để
nhận dạng. Đây là phần phức tạp khó khăn nhất trong xử lý ảnh và cũng dễ gây
lỗi, làm mất độ chính xác của ảnh. Kết quả nhận dạng ảnh phụ thuộc rất nhiều
vào công đoạn này.
1.2.5. Biểu diễn ảnh
Trong biểu diễn ảnh, người ta dùng các phần tử đặc trưng của ảnh là
pixel. Có thể xem một hàm hai biến chứa các thông tin như biểu diễn của ảnh,
việc xử lý ảnh số yêu cầu ảnh phải được mã hóa và lượng tử hóa. Việc lượng tử
hóa ảnh là chuyển đổi tín hiệu tương tự sang tín hiệu số của một ảnh đã lấy mẫu
sang một số hữu hạn mức xám. Một số mô hình thường được dùng trong xử lý
ảnh, mô hình toán, mô hình thống kê.
1.2.6. Nén ảnh
Dữ liệu ảnh cũng như các dữ liệu khác cần phải truyền đi trên mạng,
lượng thông tin để biểu diễn cho một ảnh là rất lớn. Do đó làm giảm lượng
thông tin hay nén dữ liệu là một nhu cầu cần thiết.

8
CHƯƠNG 2: PHÁT HIỆN VÀ TRÍCH XUẤT VĂN BẢN VỚI OPEN CV
VÀ OCR
2.1. Khái niệm về OCR
OCR là viết tắt của thuật ngữ "Optical Character Recognition" (Nhận
dạng ký tự quang học), một công nghệ tiên tiến được sử dụng rộng rãi trong
việc xử lý và nhận dạng văn bản từ các tập tin ảnh hoặc hình ảnh kỹ thuật số.
Với sự phát triển của công nghệ quang học và trí tuệ nhân tạo, OCR đã trở
thành một công cụ quan trọng trong việc quét và chuyển đổi các tài liệu giấy
thành định dạng kỹ thuật số, dễ dàng để truy xuất, lưu trữ và sử dụng.

Mục tiêu chính của OCR là chuyển đổi các ký tự được ghi trên tài liệu
giấy thành văn bản có thể xử lý được trên máy tính. Điều này được thực hiện
bằng cách sử dụng một hệ thống phân tích hình ảnh phức tạp để nhận dạng và
giải mã thông tin từ các ký tự được in hoặc viết tay trên tài liệu. Các kỹ thuật xử
lý hình ảnh, như nhận dạng biên, nhận dạng đặc trưng và nhận dạng mẫu, được
áp dụng để trích xuất thông tin và chuyển đổi nó thành văn bản có thể chỉnh sửa
và tìm kiếm.

Ứng dụng của OCR rất đa dạng. Với OCR, các văn bản trước đây chỉ có
sẵn dưới dạng giấy có thể được chuyển đổi thành phiên bản điện tử và lưu trữ
trực tuyến hoặc trên máy tính cá nhân. Điều này tiết kiệm không chỉ không gian
lưu trữ mà còn thời gian và công sức khi tìm kiếm thông tin. Ngoài ra, OCR
cũng giúp tiết kiệm tài nguyên và giảm thời gian làm việc bằng cách tự động
nhập liệu và xử lý thông tin từ các tài liệu quan trọng như hóa đơn, hộ chiếu,
danh thiếp và tài liệu hợp đồng.

Một trong những lợi ích chính của OCR là khả năng tăng cường hiệu quả
và độ chính xác trong việc xử lý thông tin. Với việc sử dụng OCR, người dùng
có thể dễ dàng tìm kiếm và truy xuất thông tin từ hàng ngàn trang tài liệu chỉ
trong vài giây, giúp tiết kiệm thời gian và nâng cao năng suất làm việc. Ngoài
ra, OCR cũng cho phép chỉnh sửa và xử lý văn bản dễ dàng, bằng cách cho phép
người dùng sao chép, cắt, dán và sửa đổi nội dung một cách thuận tiện.
9
Trên thực tế, công nghệ OCR đã được tích hợp vào nhiều ứng dụng và
dịch vụ hàng ngày của chúng ta. Ví dụ, khi chụp ảnh hóa đơn bằng điện thoại di
động, OCR có thể tự động nhận dạng và trích xuất thông tin như ngày tháng, số
tiền và thông tin nhà cung cấp. Điều này giúp người dùng dễ dàng quản lý tài
chính cá nhân và hợp đồng giao dịch.

Trong tương lai, với sự phát triển tiếp tục của công nghệ quang học và trí
tuệ nhân tạo, OCR dự kiến sẽ tiếp tục cải thiện độ chính xác và khả năng xử lý
thông tin. Điều này sẽ mở ra những cơ hội mới cho ứng dụng của OCR trong
các lĩnh vực như giáo dục, y tế, tài chính và công nghiệp.

2.2. Khái quát về Open CV

OpenCV là tên viết tắt của open source computer vision library – có thể
được hiểu là một thư viện nguồn mở cho máy tính. Cụ thể hơn OpenCV là kho
lưu trữ các mã nguồn mở được dùng để xử lý hình ảnh, phát triển các ứng dụng
đồ họa trong thời gian thực.

OpenCV cho phép cải thiện tốc độ của CPU khi thực hiện các hoạt động
real time. Nó còn cung cấp một số lượng lớn các mã xử lý phục vụ cho quy
trình của thị giác máy tính hay các learning machine khác.

OpenCV được cho là một phần mềm đa nhiệm. Nó được ứng dụng trong
rất nhiều trường hợp khác nhau. Một trong những tác dụng quan trọng của
OpenCV là khả năng xử lý ảnh. Thư viện này cung cấp nhiều công cụ cho việc
chỉnh sửa và biến đổi hình ảnh, như điều chỉnh độ sáng, tương phản, màu sắc,
lọc nhiễu, cắt, xoay và thay đổi kích thước. Điều này giúp người dùng có khả
năng điều chỉnh và cải thiện chất lượng hình ảnh theo ý muốn.

OpenCV cũng hỗ trợ trong việc nhận dạng khuôn mặt từ ảnh và video.
Các thuật toán như Haar cascade, Local Binary Patterns (LBP) và phương pháp
nhận dạng Eigenfaces được tích hợp vào thư viện để phát hiện và nhận dạng
khuôn mặt một cách hiệu quả. Điều này có ứng dụng trong các lĩnh vực như

10
nhận dạng khuôn mặt trong ảnh chụp, hệ thống kiểm soát truy cập và nhận diện
khuôn mặt trong video.

Ngoài ra, OpenCV cung cấp khả năng phát hiện và nhận dạng đối tượng
trong hình ảnh hoặc video. Các phương pháp như Haar cascade, SIFT, SURF và
HOG được sử dụng để phát hiện đối tượng và nhận dạng chúng trong các ứng
dụng như nhận dạng biển số xe, phát hiện vật thể trong video giám sát và ứng
dụng thực tế tăng cường.

OpenCV cũng hỗ trợ trong việc phân loại ảnh và xử lý video. Các thuật
toán máy học như SVM, Neural Networks và Decision Trees được tích hợp để
phân loại và nhận dạng ảnh theo nhãn. Đồng thời, OpenCV cho phép xử lý
video bằng cách trích xuất khung hình, theo dõi đối tượng và ổn định hình ảnh
video.

2.3. Khái quát về Tesseract

Tesseract là một thư viện mã nguồn mở được sử dụng để nhận dạng ký tự


quang học (OCR - Optical Character Recognition). Nó được phát triển bởi
nhóm nghiên cứu của Google và ban đầu được tạo ra bởi HP Labs vào năm
1985. Sau đó, Google đã tiếp quản dự án và phát triển Tesseract thành phiên bản
4.0 vào năm 2014.

Tesseract được viết bằng ngôn ngữ lập trình C++ và cung cấp các giao
diện lập trình cho nhiều ngôn ngữ khác nhau, nhưng trong đề tài này nhóm em
sử dụng nó cho Python. Nó sử dụng các thuật toán phức tạp để chuyển đổi các
hình ảnh chứa văn bản thành văn bản có thể đọc được.

Tesseract có khả năng nhận dạng văn bản từ các hình ảnh có độ phân giải
thấp, chất lượng kém, và định dạng đa dạng. Nó hỗ trợ nhiều ngôn ngữ và kết
hợp các phương pháp nhận dạng ký tự như phân loại ký tự, phân vùng, và xác
định từ ngữ.

11
Tesseract đã trở thành một trong những thư viện OCR phổ biến nhất và
được sử dụng rộng rãi trong nhiều ứng dụng như xử lý ảnh, quản lý tài liệu,
trích xuất dữ liệu, tạo văn bản tìm kiếm được từ tài liệu không tìm kiếm được,
và nhiều lĩnh vực khác.

Tuy nhiên, nó cũng có một số nhược điểm cần lưu ý. Đầu tiên, Tesseract
không hoạt động tốt trên các hình ảnh chứa nhiều nhiễu hoặc nền phức tạp, điều
này có thể làm giảm độ chính xác của quá trình nhận dạng. Thứ hai, nếu phông
chữ của ngôn ngữ không được đào tạo trước, Tesseract không thể phát hiện
chính xác ngôn ngữ đó. Cuối cùng, độ sáng hoặc độ lệch của hình ảnh cũng có
thể ảnh hưởng đến hiệu suất của Tesseract.

2.4. Khái quát về Pytesseract

Pytesseract là một thư viện Python được sử dụng để nhận dạng ký tự


trong hình ảnh bằng cách sử dụng công cụ OCR (Optical Character
Recognition). OCR là một công nghệ cho phép máy tính nhận dạng và chuyển
đổi văn bản từ hình ảnh hoặc tài liệu in thành dạng văn bản có thể xử lý được.
Pytesseract là một giao diện Python cho Tesseract, một thư viện mã nguồn mở
phát triển bởi Google, chuyên về nhận dạng ký tự trên hình ảnh. Pytesseract
cung cấp các phương thức dễ sử dụng để trích xuất văn bản từ hình ảnh và trả
về kết quả dưới dạng văn bản chuẩn.

2.5. Các bước để sử dụng OpenCV để phát hiện và trích xuất văn bản

B1: Nhập các thư viện cần thiết và định cấu hình Pytesseract bằng công
cụ Tesseract.

B2: Đọc hình ảnh bằng OpenCV.

B3: Phát hiện văn bản và số từ hình ảnh.

B4: Phát hiện từng ký tự riêng lẻ.

B5: Tạo các hộp Giới hạn trên mỗi ký tự trong hình ảnh.

12
B6: Tạo một Hộp giới hạn trên mỗi văn bản được phát hiện trong hình
ảnh.

B7: Phát hiện các chữ số và bảng chữ cái riêng lẻ.

CHƯƠNG 3: PHẦN CODE PYCHARM


#Text detection and Extraction using OpenCV
import cv2
import string
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\
Tesseract-OCR\tesseract.exe"
# Reading image
img = cv2.imread("sample2.jpeg")
# Convert to RGB
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# Detect texts from image
texts = pytesseract.image_to_string(img)
print(texts)
# conf = r'-c tessedit_char_whitelist='+string.ascii_letters
# uncomment if you want to detect alphabets only.
conf = r'-c tessedit_char_whitelist=' + string.digits
# conf = conf + string.ascii_letters # uncomment if you want
to detect numeric digits and alphabets both.
text_file = open("output.txt", "w")
n = text_file.write(texts)
text_file.close()
def draw_boxes_on_character(img):
img_width = img.shape[1]
img_height = img.shape[0]
# Return each detected character and their bounding boxes.
boxes = pytesseract.image_to_boxes(img, config=conf)
print(boxes)
for box in boxes.splitlines():
box = box.split(" ")
character = box[0]
x = int(box[1])
y = int(box[2])
x2 = int(box[3])
y2 = int(box[4])
cv2.rectangle(img, (x, img_height - y), (x2,
img_height - y2), (0, 255, 0), 1)
cv2.putText(img, character, (x, img_height - y2),
cv2.FONT_HERSHEY_COMPLEX, 0.75, (0, 0, 255), 1)
return img
def draw_boxes_on_text(img):
# Return raw information about the detected texts
raw_data = pytesseract.image_to_data(img)

13
print(raw_data)
for count, data in enumerate(raw_data.splitlines()):
if count > 0:
data = data.split()
if len(data) == 12:
x, y, w, h, content = int(data[6]),
int(data[7]), int(data[8]), int(data[9]), data[11]
cv2.rectangle(img, (x, y), (w + x, h + y), (0,
255, 0), 1)
cv2.putText(img, content, (x, y),
cv2.FONT_HERSHEY_COMPLEX, 0.5, (0, 0, 255), 1)
return img
# img = draw_boxes_on_character(img) # uncomment if you
want to detect individual characters
img_out = draw_boxes_on_text(img) # Uncomment this if you
want to detect texts
# show the output
cv2.imshow("Output", img_out)
cv2.waitKey(0)

14
CHƯƠNG 4: KẾT QUẢ

Ta lấy 1 ảnh đầu vào, yêu cầu đặt ra là không lệch, không mờ, và dạng
đứng chuẩn.

Hoặc là,

Và sau đó đưa ảnh và trích xuất đường dẫn vào code Python (Pycharm) để thực
hiện chương trình, sẽ đưa ra kết quả như thế này.

15
Chương trình sẽ đọc và định dạng và nhận diện chữ và trích xuất ra file txt.

Sau đó, ta có thể lấy file txt ở ngoài đã trích xuất sau khi đọc từ ảnh và đối chiếu
nội dung.

16
C. KẾT LUẬN
1. Kết luận
Việc phát hiện và trích xuất văn bản từ hình ảnh là một đề tài quan trọng
và có ứng dụng rộng trong nhiều lĩnh vực như xử lý ảnh, nhận dạng biển số
xe, công nghệ OCR, v.v. Trong quá trình nghiên cứu đề tài này, sử dụng
OpenCV và OCR (như Pytesseract) là hai công cụ mạnh mẽ để thực hiện các
công việc này.
OpenCV cung cấp các tính năng mạnh mẽ cho xử lý ảnh như lọc nhiễu,
phát hiện cạnh, chuyển đổi màu sắc, v.v. Điều này giúp chuẩn bị và tiền xử
lý hình ảnh trước khi áp dụng OCR. OpenCV cũng hỗ trợ các phương pháp
phát hiện vùng văn bản và định vị vị trí của văn bản trong hình ảnh.
OCR (như Pytesseract) là công nghệ quan trọng để nhận dạng ký tự trong
hình ảnh. Pytesseract là một giao diện Python tiện lợi cho Tesseract, cho
phép trích xuất văn bản từ hình ảnh và trả về kết quả dưới dạng văn bản
chuẩn.
2. Hướng phát triển
Chúng em đề xin đề xuất một số hướng phát triển cho đề tài như là tăng
cường xử lý ảnh, tùy chỉnh và huấn luyện Tesseract, cùng việc kết hợp với
các công nghệ khác là những hướng phát triển tiềm năng trong đề tài "Phát
hiện và trích xuất văn bản với OpenCV và OCR". Đối với xử lý ảnh, việc áp
dụng các phương pháp cân bằng độ sáng, cải thiện độ tương phản, và loại bỏ
nhiễu sẽ cải thiện khả năng nhận dạng văn bản trên các hình ảnh chất lượng
kém. Đồng thời, tùy chỉnh và huấn luyện Tesseract sẽ giúp xử lý các ngôn
ngữ đặc thù và phông chữ không phổ biến, nâng cao độ chính xác của quá
trình nhận dạng. Hơn nữa, việc kết hợp OpenCV và OCR với các công nghệ
học sâu và mạng neural sẽ tạo ra mô hình mạnh mẽ hơn, đảm bảo khả năng
phát hiện và trích xuất văn bản chính xác và đa ngôn ngữ.

17
Nghiên cứu và áp dụng các phương pháp tiền xử lý và tái tạo hình ảnh
cũng là một hướng phát triển tiềm năng, nhằm cải thiện khả năng nhận dạng
trên các hình ảnh với độ sáng và chất lượng khác nhau.

18
TÀI LIỆU THAM KHẢO
[1] “Nhận diện văn bản bằng Tesseract” - https://thigiacmaytinh.com/nhan-
dien-van-ban-bang-tesseract/ - Truy cập 20/5/2023.
[2] Giáo trình Xử lý ảnh – PGS. TS. Nguyễn Thanh Hải – ĐHSPKT
TPHCM.
[3] “Python Project – Text Detection and Extraction with OpenCV and
OCR” - https://projectgurukul.org/python-text-detection-extraction-opencv-
ocr/ - Truy cập ngày 20/5/2023.

19

You might also like