Làm cách nào để đào tạo mô hình Tesseract trong Python?

Tôi biết rằng tesseract không nhằm mục đích sử dụng trên dữ liệu viết tay, nhưng tôi đang cố giải quyết một vấn đề không thực sự có giải pháp đơn giản vào lúc này, đó là nhận dạng mã nguồn viết tay. Không có bộ dữ liệu mã nguồn viết tay được gắn nhãn để xây dựng mô hình từ đầu

Có một nghiên cứu được thực hiện vào năm 2017 khi họ đánh giá hiệu suất của công cụ thương mại myscript trên mã nguồn viết tay. Họ đã tạo và xuất bản bộ dữ liệu đánh giá các mẫu mã python viết tay

Nỗ lực của tôi là so sánh kết quả của họ với tesseract 4. 0 sau khi sử dụng các công cụ đào tạo để đào tạo tesseract nhận biết tập dữ liệu đánh giá của họ

Bước đầu tiên, tôi tinh chỉnh tessdata_best bằng cách cung cấp cho nó langdata sau

1. tiếng anh. training_text - đối với tệp này, tôi đã cung cấp cho nó mã nguồn gốc thực tế của các mẫu viết tay (Cuối cùng, tôi muốn NN tạo ra một mô hình tổng quát hơn bằng cách cung cấp cho nó rất nhiều mã python nhưng bước đầu tiên tôi nghĩ là chỉ thực hiện với

2. tiếng anh. danh sách từ - Tôi đã cung cấp cho tệp này tập hợp các từ khóa python từ thường xuyên nhất đến ít nhất

3. tiếng anh. punc và eng. số  - Tôi đã loại bỏ các biểu thức mà tôi biết sẽ không bao giờ xuất hiện trên mã nguồn và giữ phần còn lại. (hãy nhớ rằng tập dữ liệu chỉ có mã nguồn, tất cả các nhận xét đều bị xóa)

Tôi đã tạo dữ liệu đào tạo bằng cách sử dụng khoảng 27 phông chữ viết tay mà tôi tìm thấy trên mạng

Tôi đã đính kèm dữ liệu và tập lệnh tôi đã sử dụng và đính kèm kết quả của hai hình ảnh 1. png và 9. png trong Kết quả. txt

cho 9. png như bạn có thể thấy nó cho thấy một chút cải tiến vì nó không có các ký tự từ vựng và WER thấp hơn. Tôi nhận thấy rằng mô hình hoạt động tốt đối với các chữ cái khối như trong 9. png nhưng vẫn không thể nhận ra khi chữ viết tay lộn xộn, điều này có lý

Trong 1. png trong đó chữ viết tay hơi khó hiểu, chúng tôi thực sự không thể nói rằng mô hình được đào tạo tốt hơn

Câu hỏi của tôi là, những thứ khác mà tôi có thể thử để giảm WER từ tesseract mặc định. Tôi có thể thử những gì khác nhau?

Tôi sẽ thử đào tạo từ đầu và đào tạo một vài lớp tiếp theo, bất kỳ suy nghĩ nào về những cách tiếp cận đó cũng sẽ hữu ích

Bài viết này là hướng dẫn từng bước sử dụng Tesseract OCR để nhận dạng các ký tự từ hình ảnh bằng Python. Do tính chất của tập dữ liệu đào tạo của Tesseract, nhận dạng ký tự kỹ thuật số được ưu tiên hơn, mặc dù Tesseract OCR cũng có thể được sử dụng để nhận dạng chữ viết tay. Tesseract OCR là một dự án mã nguồn mở, được bắt đầu bởi Hewlett-Packard. Sau đó, Google tiếp quản sự phát triển. Kể từ ngày 29 tháng 10 năm 2018, phiên bản ổn định mới nhất 4. 0. 0 dựa trên LSTM (bộ nhớ ngắn hạn dài). Hãy xem nó trên Github để tìm hiểu thêm

Phiên bản chính thức của Tesseract OCR cho phép các nhà phát triển xây dựng ứng dụng của riêng họ bằng API C hoặc C++. Theo thời gian, cộng đồng đã tạo ra các phiên bản công cụ bên ngoài, trình bao bọc và thậm chí cả các dự án đào tạo của riêng họ. Trong bài viết này, tôi sẽ sử dụng một trình bao bọc Python có tên là tesserocr bởi vì

  1. Nó đơn giản và dễ sử dụng
  2. Nó hỗ trợ phiên bản 4. 0. 0 (tại thời điểm viết bài này)
  3. Phần bình luận và giải thích trong file rất chi tiết

Nếu bạn đang tìm kiếm các trình bao bọc hoặc công cụ khác, hãy kiểm tra đặt liên kết này

Hướng dẫn này bao gồm các phần sau

  1. Thiết lập và cài đặt
  2. Chuẩn bị hình ảnh thử nghiệm
  3. Cách sử dụng và lệnh gọi API
  4. tinh chỉnh
  5. Kết quả
  6. Phần kết luận
1. Thiết lập và cài đặt

Có nhiều cách để cài đặt tesserocr. Các yêu cầu và các bước nêu trong phần này sẽ dựa trên cài đặt qua pip trên hệ điều hành Windows. Bạn có thể kiểm tra các bước cần thiết qua Github chính thức nếu muốn cài đặt qua các phương pháp khác

chung cư

Nếu bạn đang sử dụng Conda, bạn có thể cài đặt nó qua conda-forge

conda install -c conda-forge tesserocr

con trăn

Bạn nên cài đặt python với phiên bản 3. 6 hoặc 3. 7. Tôi sẽ sử dụng Python 3. 7. 1 được cài đặt trong môi trường ảo cho hướng dẫn này

Mô-đun Python qua pip

Tải xuống tệp được yêu cầu dựa trên phiên bản python và hệ điều hành. Tôi đã tải xuống tesserocr v2. 4. 0 — Trăn 3. 7–64bit và lưu vào thư mục tesserocr-master (bạn có thể lưu ở đâu tùy thích). Từ thư mục, mở dấu nhắc lệnh (chỉ cần trỏ nó vào thư mục chứa tệp whl nếu bạn đã mở dấu nhắc lệnh từ thư mục khác). Cài đặt qua pip được thực hiện thông qua đoạn mã sau

pip install <package_name>.whl

Package_name đề cập đến tên của tệp whl bạn đã tải xuống. Trong trường hợp của tôi, tôi đã tải xuống tesserocr-2. 4. 0-cp37-cp37m-win_amd64. whl. Do đó, tôi sẽ sử dụng đoạn mã sau để cài đặt

pip install tesserocr-2.4.0-cp37-cp37m-win_amd64.whl

Bước tiếp theo là cài đặt Gối, một mô-đun để xử lý hình ảnh trong Python. Gõ lệnh sau

pip install Pillow

Tệp dữ liệu ngôn ngữ

Các tệp dữ liệu ngôn ngữ được yêu cầu trong quá trình khởi tạo lệnh gọi API. Có ba loại tệp dữ liệu

  1. dữ liệu. Mô hình tiêu chuẩn chỉ hoạt động với Tesseract 4. 0. 0. Chứa cả công cụ kế thừa (--oem 0) và công cụ dựa trên mạng thần kinh LSTM (--oem 1). oem đề cập đến một trong các tham số có thể được chỉ định trong quá trình khởi tạo. Nhanh hơn rất nhiều so với tessdata_best với độ chính xác thấp hơn. Liên kết đến tessdata tiêu chuẩn
  2. tessdata_best. Mô hình được đào tạo tốt nhất chỉ hoạt động với Tesseract 4. 0. 0. Nó có độ chính xác cao nhất nhưng chậm hơn rất nhiều so với phần còn lại. Liên kết tới tessdata_best
  3. tessdata_fast. Mô hình này cung cấp một tập hợp thay thế các mô hình LSTM số nguyên đã được xây dựng với một mạng nhỏ hơn. Liên kết tới tessdata_fast

Tôi sẽ sử dụng tessdata tiêu chuẩn trong hướng dẫn này. Tải xuống qua liên kết ở trên và đặt nó vào thư mục gốc của dự án của bạn. Trong trường hợp của tôi, nó sẽ nằm trong thư mục tesserocr-master. Tôi đã thực hiện thêm một bước và đổi tên các tệp dữ liệu thành tessdata. Điều này có nghĩa là tôi có cấu trúc thư mục sau

.../tesserocr-master/tessdata
2. Chuẩn bị hình ảnh thử nghiệm

Lưu hình ảnh

Các cách hiệu quả nhất để có được hình ảnh thử nghiệm như sau

  1. Tìm kiếm hình ảnh trực tuyến bằng cách sử dụng các từ khóa như “biển báo đường bộ”, “nhà hàng”, “thực đơn”, “đã quét”, “biên lai”, v.v.
  2. Sử dụng công cụ snipping để lưu hình ảnh của các bài báo trực tuyến, tiểu thuyết, sách điện tử, v.v.
  3. Sử dụng máy ảnh để chụp ảnh màn hình nhãn hoặc hướng dẫn dán trên các sản phẩm gia dụng

Các cách kém hiệu quả nhất để lấy hình ảnh thử nghiệm như sau

  1. Tìm một cuốn sách và gõ vài đoạn đầu tiên trong bất kỳ tài liệu soạn thảo văn bản nào. Sau đó, in nó trên một tờ giấy A4 và quét dưới dạng pdf hoặc bất kỳ định dạng hình ảnh nào khác
  2. Thực hành chữ viết tay của bạn để viết như thể các từ đang được gõ. Kiếm đủ tiền để mua máy ảnh DSLR cao cấp hoặc điện thoại có camera chất lượng cao. Chụp ảnh màn hình và chuyển nó vào máy tính của bạn
  3. Nghiên cứu kiến ​​thức cơ bản về pixel để lấp đầy canvas 128x128 bằng các khối ký tự. Nếu bạn cảm thấy quá tốn thời gian, hãy cân nhắc tham gia một số lớp lập trình và thuật toán để viết một số mã tự động hóa quy trình điền pixel

Tôi đã lưu những hình ảnh sau làm hình ảnh thử nghiệm

  • biên lai
  • Một bản tóm tắt từ một bài báo được xuất bản
  • Giới thiệu từ một cuốn sách
  • đoạn mã
  • Một vài đoạn trong tiểu thuyết (tiếng Trung và tiếng Nhật)
  • Một vài biểu tượng cảm xúc của Trung Quốc

Sơ chế

Hầu hết các hình ảnh yêu cầu một số hình thức hoặc tiền xử lý để cải thiện độ chính xác. Kiểm tra liên kết sau để tìm hiểu thêm về cách cải thiện chất lượng hình ảnh. Một vài lưu ý quan trọng cần được tính đến để có độ chính xác tốt nhất

  • văn bản tối trên nền trắng
  • hình ảnh đen trắng
  • xóa kênh alpha (lưu hình ảnh dưới dạng jpeg/jpg thay vì png)
  • tinh chỉnh thông qua các tham số psm (Chế độ phân đoạn trang)

Page Segmentation Mode sẽ được thảo luận sau, trong phần tiếp theo. Chúng tôi sẽ bắt đầu với việc chuyển đổi một hình ảnh thành đen trắng. Cho hình ảnh sau

Đoạn mã mẫu từ Notebook của tôi

Nếu bạn đang sử dụng Jupyter Notebook, bạn có thể nhập đoạn mã sau và nhấn Shift+Enter để thực thi mã

from PIL import Imagecolumn = Image.open('code.jpg')
gray = column.convert('L')
blackwhite = gray.point(lambda x: 0 if x < 200 else 255, '1')
blackwhite.save("code_bw.jpg")
  • Hình ảnh. mở ('mã. jpg’). mã số. jpg là tên của tập tin. Sửa đổi cái này theo tên của tệp đầu vào
  • PIL. đề cập đến phiên bản cũ của Gối. Bạn chỉ cần cài đặt Gối và bạn sẽ có thể nhập mô-đun Hình ảnh. Không cài đặt cả Gối và PIL
  • cột. chuyển đổi ('L'). L đề cập đến chế độ thang độ xám. Các tùy chọn khả dụng khác bao gồm RGB và CMYK
  • x < 200 khác 255. tinh chỉnh giá trị 200 thành bất kỳ giá trị nào khác nằm trong khoảng từ 0 đến 255. Kiểm tra tệp đầu ra để xác định giá trị phù hợp

Nếu bạn đang sử dụng dòng lệnh để gọi tệp Python. Nhớ thay đổi tệp đầu vào và nhập sys

Phiên bản đen trắng của đoạn mã

Vui lòng thử các phương pháp xử lý hình ảnh khác để cải thiện chất lượng hình ảnh của bạn. Khi bạn đã hoàn tất, hãy chuyển sang phần tiếp theo

3. Sử dụng và lệnh gọi API

Sử dụng câu lệnh with cho một hình ảnh

Bạn có thể sử dụng câu lệnh with để khởi tạo đối tượng và

pip install tesserocr-2.4.0-cp37-cp37m-win_amd64.whl
1 để lấy kết quả. Phương pháp này đang được gọi là trình quản lý ngữ cảnh. Nếu bạn không sử dụng câu lệnh with, thì nên gọi rõ ràng
pip install tesserocr-2.4.0-cp37-cp37m-win_amd64.whl
2 khi nó không còn cần thiết nữa. Tham khảo ví dụ bên dưới để xử lý thủ công cho một hình ảnh

________số 8_______

Nếu bạn gặp lỗi sau trong khi gọi, điều đó có nghĩa là chương trình không thể định vị các tệp dữ liệu ngôn ngữ (thư mục tessdata)

RuntimeError: Failed to init API, possibly an invalid tessdata path:

Bạn có thể giải quyết vấn đề này bằng cách cung cấp đường dẫn làm đối số trong quá trình khởi tạo. Bạn thậm chí có thể chỉ định ngôn ngữ được sử dụng — như bạn có thể thấy trong ví dụ này (kiểm tra phần được tô đậm)

from tesserocr import PyTessBaseAPIwith PyTessBaseAPI(path='C:/path/to/tessdata/.', lang='eng') as api:
api.SetImageFile('sample.jpg')
print(api.GetUTF8Text())

Xử lý thủ công cho một hình ảnh

Mặc dù phương thức được đề xuất là thông qua trình quản lý bối cảnh, nhưng bạn vẫn có thể khởi tạo nó dưới dạng đối tượng theo cách thủ công

from tesserocr import PyTessBaseAPIapi = PyTessBaseAPI(path='C:/path/to/tessdata/.', lang='eng')
try:
api.SetImageFile('sample.jpg')
print(api.GetUTF8Text())
finally:
api.End()

Nhận giá trị tin cậy cho mỗi từ

PyTessBaseAPI có một số phương thức tesseract khác có thể được gọi. Điều này bao gồm nhận phiên bản tesseract hoặc thậm chí giá trị độ tin cậy cho mỗi từ. Tham khảo tesserorc. pyx để biết thêm thông tin. Để có được sự tự tin của từ, bạn chỉ cần sử dụng hàm

pip install tesserocr-2.4.0-cp37-cp37m-win_amd64.whl
3)

pip install <package_name>.whl
0

Bạn sẽ nhận được một danh sách các số nguyên từ 0(tệ nhất) đến 100(tốt nhất) chẳng hạn như kết quả bên dưới (mỗi điểm đại diện cho một từ)

pip install <package_name>.whl
1

Nhận ngôn ngữ có sẵn

Ngoài ra còn có một chức năng để có được tất cả các ngôn ngữ có sẵn.

pip install tesserocr-2.4.0-cp37-cp37m-win_amd64.whl
4. Bạn có thể sử dụng đầu ra làm tham chiếu cho tham số lang

pip install <package_name>.whl
2

Đầu ra sau đây phụ thuộc vào số lượng tệp dữ liệu ngôn ngữ mà bạn có trong thư mục tessdata

pip install <package_name>.whl
3

Sử dụng câu lệnh with cho nhiều hình ảnh

Bạn có thể sử dụng danh sách để lưu trữ đường dẫn đến từng hình ảnh và gọi vòng lặp for để lặp từng hình ảnh

tesserocr cung cấp cho chúng ta rất nhiều hàm trợ giúp có thể được sử dụng với luồng để xử lý đồng thời nhiều hình ảnh. Phương pháp này có hiệu quả cao và nên được sử dụng bất cứ khi nào có thể. Để xử lý một hình ảnh duy nhất, chúng ta có thể sử dụng hàm trợ giúp mà không cần khởi tạo PyTessBaseAPI

Các chức năng trợ giúp có sẵn khác bao gồm

Nếu bạn muốn biết thêm về các lệnh gọi API có sẵn khác, hãy kiểm tra tesserocr. tập tin pyx. Hãy chuyển sang phần tiếp theo

4. tinh chỉnh

Trong phần này, chúng ta sẽ khám phá cách tinh chỉnh tesserocr để phát hiện các ngôn ngữ khác nhau và đặt các PSM khác nhau (Chế độ phân đoạn trang)

Đặt ngôn ngữ khác

Bạn có thể thay đổi ngôn ngữ bằng cách chỉ định tham số ngôn ngữ trong quá trình khởi tạo. Ví dụ, để đổi ngôn ngữ từ tiếng Anh sang tiếng Trung giản thể, chỉ cần sửa eng thành chi_sim, như sau

pip install <package_name>.whl
4

Trên thực tế, bạn có thể chỉ định nhiều hơn một ngôn ngữ. Đơn giản chỉ cần viết nó bằng dấu +. Lưu ý rằng thứ tự rất quan trọng vì nó sẽ ảnh hưởng đến độ chính xác của kết quả

pip install <package_name>.whl
5

Một số ngôn ngữ, chẳng hạn như tiếng Nhật và tiếng Trung, có một danh mục riêng khác để nhận dạng văn bản dọc

pip install <package_name>.whl
6

Tham khảo đoạn mã sau về cách thay đổi ngôn ngữ trong quá trình khởi tạo

Đặt chế độ phân đoạn trang

Trong quá trình khởi tạo, bạn có thể đặt một tham số khác gọi là psm, tham số này đề cập đến cách mô hình sẽ xử lý hình ảnh. Nó sẽ ảnh hưởng đến độ chính xác, tùy thuộc vào cách bạn đặt nó. Nó chấp nhận bảng liệt kê PSM. Danh sách như sau

  • 0.
    pip install tesserocr-2.4.0-cp37-cp37m-win_amd64.whl
    5 Chỉ định hướng và phát hiện tập lệnh
  • 1.
    pip install tesserocr-2.4.0-cp37-cp37m-win_amd64.whl
    6 Tự động phân đoạn trang với định hướng và phát hiện tập lệnh. (OSD)
  • 2.
    pip install tesserocr-2.4.0-cp37-cp37m-win_amd64.whl
    7 Phân đoạn trang tự động, nhưng không có OSD hoặc OCR
  • 3.
    pip install tesserocr-2.4.0-cp37-cp37m-win_amd64.whl
    8 Phân đoạn trang hoàn toàn tự động, nhưng không có OSD. (chế độ mặc định cho tesserocr)
  • 4.
    pip install tesserocr-2.4.0-cp37-cp37m-win_amd64.whl
    9-Giả sử một cột văn bản có kích thước thay đổi
  • 5.
    pip install Pillow
    0-Giả sử một khối văn bản được căn chỉnh theo chiều dọc thống nhất
  • 6.
    pip install Pillow
    1-Giả sử một khối văn bản thống nhất
  • 7.
    pip install Pillow
    2-Xử lý hình ảnh dưới dạng một dòng văn bản
  • số 8.
    pip install Pillow
    3-Coi hình ảnh như một từ đơn
  • 9.
    pip install Pillow
    4-Xử lý hình ảnh như một từ duy nhất trong một vòng tròn
  • 10.
    pip install Pillow
    5-Xử lý hình ảnh dưới dạng một ký tự
  • 11.
    pip install Pillow
    6-Tìm càng nhiều văn bản càng tốt không theo thứ tự cụ thể
  • 12.
    pip install Pillow
    7-Văn bản thưa thớt với tính năng định hướng và phát hiện tập lệnh
  • 13.
    pip install Pillow
    8-Xử lý hình ảnh dưới dạng một dòng văn bản, bỏ qua các bản hack dành riêng cho Tesseract

Bạn có thể chỉ định nó trong mã như sau

pip install <package_name>.whl
7

Nếu bạn gặp sự cố khi phát hiện văn bản, hãy thử cải thiện hình ảnh hoặc thay đổi các giá trị PSM

Tiếp theo, tôi sẽ chia sẻ một số kết quả thú vị mà tôi thu được

5. Kết quả

Đây là kết quả từ thử nghiệm của tôi khi chạy tesserocr

Chinese emoticons (表情包)

Hình ảnh là tệp đầu vào được sử dụng trong khi chú thích là kết quả

是 的 没 错

你 巳 经 超 过 1 尘
没 理 你 的 小 宝 宝 了

后 退 , 我 要 开 始 装 逼 了

Kết quả khá tốt khi văn bản nằm trong một dòng. Cũng lưu ý rằng các biểu tượng cảm xúc có văn bản màu đen trên nền trắng. Tôi đã thử phủ văn bản màu trắng lên một cảnh trong hoạt hình (một cảnh có màu, không có bất kỳ hình ảnh xử lý trước nào). Kết quả khá tệ

văn bản kỹ thuật số tiếng anh

Hình ảnh là tệp đầu vào và chú thích là danh mục. Kết quả được hiển thị sau hình ảnh

Biên lai
pip install <package_name>.whl
8

Sách điện tử
pip install <package_name>.whl
9

Tóm tắt bài báo khoa học
pip install tesserocr-2.4.0-cp37-cp37m-win_amd64.whl
0

đoạn mã

Nhìn chung, kết quả rất xuất sắc, ngoại trừ một số vấn đề về định dạng, dấu cách và ngắt dòng

6. Phần kết luận

Đây là phần cuối của hướng dẫn của chúng tôi về cách sử dụng tesserocr để nhận dạng các từ kỹ thuật số trong hình ảnh. Mặc dù kết quả rất hứa hẹn nhưng vẫn còn rất nhiều việc phải làm để tạo ra một quy trình cho trường hợp sử dụng thực tế. Điều này bao gồm tiền xử lý hình ảnh, cũng như xử lý hậu kỳ văn bản

Ví dụ: để tự động điền tự động chứng minh nhân dân để đăng ký hoặc giấy biên nhận để điền bồi thường, có một ứng dụng hoặc dịch vụ web đơn giản chấp nhận đầu vào hình ảnh. Đầu tiên, ứng dụng cần cắt ảnh và chuyển thành ảnh đen trắng. Sau đó, nó sẽ chuyển hình ảnh đã sửa đổi để nhận dạng ký tự qua tesserocr. Văn bản đầu ra sẽ được xử lý tiếp để xác định dữ liệu cần thiết và lưu vào cơ sở dữ liệu. Một phản hồi đơn giản sẽ được chuyển tiếp đến người dùng, cho biết quá trình đã hoàn tất thành công

Bất kể công việc liên quan hiện nay là gì, công nghệ này vẫn ở đây. Bất cứ ai sẵn sàng dành thời gian và nguồn lực để triển khai nó sẽ được hưởng lợi từ nó. nơi nào có ý chí nơi đó có dường đi

Làm cách nào để nhập Tesseract trong Python?

MỞ MỘT HÌNH ẢNH ĐƠN GIẢN .
Nhập cv2
Nhập pytesseract
Lưu hình ảnh thử nghiệm trong cùng thư mục
Tạo một biến để lưu trữ hình ảnh bằng cv2. imread() và chuyển tên của hình ảnh làm tham số
Để thay đổi kích thước hình ảnh, hãy sử dụng cv2. resize() và vượt qua độ phân giải cần thiết
Sử dụng cv2. .
Thêm một cv2

Làm cách nào để triển khai OCR trong Python?

Python OCR là công nghệ nhận dạng và trích xuất văn bản trong hình ảnh như tài liệu và ảnh được quét bằng Python. Nó có thể được hoàn thành bằng cách sử dụng công cụ OCR mã nguồn mở Tesseract . Chúng ta có thể làm điều này trong Python bằng một vài dòng mã. Một trong những công cụ OCR phổ biến nhất được sử dụng là Tesseract.

Tesseract có sử dụng máy học không?

Tesseract 3. x dựa trên thuật toán thị giác máy tính truyền thống . Trong vài năm qua, các phương pháp dựa trên Học sâu đã vượt qua các kỹ thuật học máy truyền thống bằng một khoảng cách rất lớn về độ chính xác trong nhiều lĩnh vực của Thị giác máy tính. Nhận dạng chữ viết tay là một trong những ví dụ nổi bật.

Làm cách nào để python chuyển đổi hình ảnh thành văn bản bằng OCR với Tesseract?

Pytesseract hay Python-tesseract là công cụ Nhận dạng ký tự quang học (OCR) dành cho python. .
Đang tải Hình ảnh được lưu từ máy tính hoặc tải xuống bằng trình duyệt và sau đó tải tương tự. (Mọi hình ảnh có văn bản)
Nhị phân hóa hình ảnh (Chuyển đổi hình ảnh thành nhị phân)
Sau đó chúng tôi sẽ chuyển hình ảnh qua hệ thống OCR