Skip to content
Mì AI Mì AI Mì AI

Học AI theo cách Mì ăn liền!

Mì AI Mì AI Mì AI

Học AI theo cách Mì ăn liền!

  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
Close

Search

  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
Mì AI Mì AI Mì AI

Học AI theo cách Mì ăn liền!

Mì AI Mì AI Mì AI

Học AI theo cách Mì ăn liền!

  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
Close

Search

  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
Computer Vision

[OCR] Nhận dạng văn bản tiếng Việt với Tesseract OCR

By Chủ tiệm Mì
August 22, 2019 5 Min Read
33

Xin chào các bạn, cảm ơn các bạn đã quan tâm và quay lại Blog Mì AI. Hôm nay để tiếp nối chuỗi bài về Computer Vision mình xin guide cho các bạn một bài đơn giản , theo đúng phong cách Mì AI về vấn đề Nhận dạng Tiếng Việt, nhận dạng văn bản (Optical Charactor Recognition) nhé.

Về cách nhận dạng văn bản thì có nhiều cách tiếp cận lắm luôn, một số cách mà mình biết như sau:

  • Sử dụng Tesseract OCR
  • Train model bằng CNN + SVM
  • Train model CNN – RNN – CTC….

Mỗi cái lại có cái hay, cái dở riêng và yêu cầu khả năng lập trình khác nhau. Hôm nay mình sẽ chia sẻ với các bạn cách dùng Tesseract OCR cho đơn giản nhé. Hiện Tess đã có đến phiên bản 4.0 nên dùng khá ổn cho các nhu cầu thông thường (chữ viết tay là chịu nhé).

Thôi, bắt đầu ngay cho nóng nhé!

Như thường lệ, mình xin trình bày trước cấu trúc bài viết để các bạn có cái nhìn tổng quan. Bài viết sẽ gồm các phần

  • Phần 1. Chuẩn bị môi trường, cài đặt thư viện Tesseract OCR
  • Phần 2. Cấu hình và thêm ngôn ngữ tiếng Việt
  • Phần 3. Viết code nhận dạng và tận hưởng

Phần 1. Chuẩn bị môi trường

Như thường lệ các bạn hãy tạo 1 thử mục MiAI_Tess_OCR lưu vào đâu đó trên ổ cứng nhé. Bây giờ các bạn cài đặt Tesseract OCR theo cách sau, tùy vào các bạn dùng OS gì (mình không recommend window nhé, dù vẫn chạy).

Với các bạn dùng MacOS: Chúng ta sẽ cài đặt bằng công cụ Homebrew nhé. Các bạn gõ lệnh sau:

brew install tesseract

Sau khi gõ xong các bạn đợi chạy lệnh hết là thành công!

nhận dạng tiếng việt
Nguồn: pyimagesearch

Với các bạn dùng Linux: Các bạn sử dụng apt-get như sau:

sudo apt-get install tesseract-ocr

Sau đó cũng ngồi đợi cho nó chạy hết lệnh là okie.

nhận dạng tiếng việt
Nguồn: pyimagesearch

Với các bạn sử dụng Window: Thì cái này mình không cài thử bao giờ nên các bạn theo guide của Tesseract. Tóm lại là các bạn tải file cài đặt tại đây https://github.com/UB-Mannheim/tesseract/wiki (nhớ chọn bản 32bit và 64 bit phù hợp với window của bạn).

nhận dạng tiếng việt

Okie rồi, sau khi cài đặt xong, các bạn có thể kiểm tra công cuộc cài đặt xem đã thành công chưa bằng cách gõ lệnh:

tesseract -v

Nếu như màn hình hiện ra thông tin phiên bản như ảnh dưới thì là bạn đã cài thành công.

nhận dạng tiếng việt

Còn nếu như báo lỗi dạng “command not found” hoặc “is not recognize” thì các bạn restart lại máy hoặc đặt PATH cho phù hợp nhé (cái này tùy OS). Bạn nào cần thì comment mình sẽ guide thêm.

Phần 2. Cấu hình và cài đặt tiếng Việt.

Okie rồi, vậy là các bạn đã cài đặt thư viện Tess OCR. Tuy nhiên mặc định của nó không có ngôn ngữ tiếng việt và chúng ta phải tiến hành cài đặt thêm.

Các bạn truy cập vào link https://github.com/tesseract-ocr/tessdata chọn ngôn ngữ tiếng việt, chính là file vie.traineddata tải về máy và copy vào thư mục ngôn ngữ của Tess OCR.

Chắc các bạn sẽ hỏi thư mục ngôn ngữ ở đâu? Cái này nó tùy vào bạn cài đặt ở thư mục nào, hệ điều hình nào. Thư mục ngôn ngữ có tên tessdata nằm trong thư mục cài đặt Tesserac OCR. Nói chung là kiểu gì cũng có cái thư mục tên là tessdata trong máy, các bạn hãy tìm nó và copy file vie.traineddata vào thư mục tessdata đó.

Như máy mình là MacOS nên thư mục tessdata nó nằm ở:

root⁩ ▸ ⁨usr⁩ ▸ ⁨local⁩ ▸ ⁨Cellar⁩ ▸ ⁨tesseract⁩ ▸ ⁨4.0.0_1⁩ ▸ ⁨share⁩

Phần 3. Viết code và tận hưởng thành quả nhận dạng

Xong phần cấu hình, bây giờ viết code bằng Python để nhận dạng nhé.

Để code chạy được, các bạn hãy tiến hành cài đặt các thư viện sau:

pip install pillow
pip install pytesseract
pip install opencv-python

Bây giờ các bạn vào thư mục MiAI_Tess_Ocr và tải source trên github của mình (https://github.com/thangnch/py_ocr) về hoặc gõ lệnh sau:

git clone https://github.com/thangnch/py_ocr

Bây giờ trong thư mục MiAI_Tess_Ocr sẽ xuất hiện thêm thư mục py_ocr. File py_ocr.py nó làm gi thì mình đã comment từng dòng trong code rồi nhé. Còn bây giờ, tiến hành chuyển vào trong thư mục đó bằng lệnh cd py_ocr và gõ tiếp lệnh nhận dạng:

python py_ocr.py -i miai.png -p thresh

Nếu mọi thứ ngon lành, các bạn sẽ thấy kết quả nhận dạng tiếng việt mỹ mãn như sau. Nếu để ý các bạn sẽ thấy, file ảnh có nhiễu nhưng chúng ta vẫn nhận dạng vô tư nhé ;). Đó là vì mình có áp dụng biện pháp tiền xử lý ở đoạn ” -p thresh”

nhận dạng tiếng việt

OK! Như vậy các bạn đã bước đầu dấn thân vào món OCR với nhận dạng tiếng việt. Món này còn nhiều thứ rất hay, mình sẽ tiếp tục chia sẻ trong những bài sau nhé.

Bài sau mình sẽ viết về cách train Tesseract OCR để nhận dạng các font chữ đặc thù. Ví dụ bạn có một văn bản với Font rất dị dạng thì Tess OCR sẽ không nhận được đâu, bạn phải train nó nhé!

Hẹn gặp lại!

Fanpage: http://facebook.com/miaiblog
Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup
Website: https://miai.vn/
Youtube: http://bit.ly/miaiyoutube

Tags:

aideep learningdlmachine learningmì aimlnhận dạngOCRopencvTesseractTesseract OCRtiếng việtvăn bảnvietai
Author

Chủ tiệm Mì

Follow Me
Other Articles
Previous

[Computer Vision] Thử lập trình xe ô tô đua tự lái với mạng CNN

Next

[YOLO Series] Train và detect sử dụng YOLO model trên Windows

33 Comments
  1. vô thường says:
    August 22, 2019 at 7:24 am

    Bài viết hữu ích, thank cái tâm người viết nhé!

    Reply
    1. Nguyễn Chiến Thắng says:
      August 22, 2019 at 7:58 am

      Không có gì bạn. Mời bạn join cộng đồng Mì AI!

      #MìAI
      Fanpage: http://facebook.com/miaiblog
      Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup
      Website: https://miai.vn
      Youtube: http://bit.ly/miaiyoutube

      Reply
  2. Huong says:
    August 25, 2019 at 1:51 pm

    Sao mình đọc trên wiki là nhận dạng được cả chữ viết tay mà. Thế có thư viện nào nhận dạng được chữ viết tay không bạn?

    Reply
    1. Nguyễn Chiến Thắng says:
      August 26, 2019 at 1:18 am

      Ah. Theo lý thuyết là nhận được cả chữ viết tay nhưng thực tế sử dụng thì chất lượng nhận dạng rất tệ bạn ah. Đặc biệt là Tiếng Việt.
      Về chữ viết tay hiện nay thì phải train model riêng bạn ah, sử dụng RNN, CNN và CTC loss. Mình sẽ có một bài riêng về vấn đề này, mong bạn ủng hộ nhé.

      Bạn có thể join cùng #MìAI
      Fanpage: http://facebook.com/miaiblog
      Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup
      Website: https://miai.vn
      Youtube: http://bit.ly/miaiyoutube

      Reply
  3. Hốt says:
    August 26, 2019 at 9:16 am

    Bạn ơi hướng dẫn mình cách đặt PATH trên window với ạ. mình cảm ơn

    Reply
    1. Nguyễn Chiến Thắng says:
      August 26, 2019 at 9:17 am

      Bạn tham khảo bài này nhé.
      https://docs.alfresco.com/4.2/tasks/fot-addpath.html

      Reply
  4. [OCR] “Đào tạo” Tesseract OCR để nhận dạng Tiếng Việt với các font chữ khù khoằm – Mì AI says:
    August 28, 2019 at 1:58 am

    […] của Tesseract OCR (copy như vào các bạn thực hiện theo Phần 2 của bài này nhé https://miai.vn/2019/08/22/ocr-nhan-dang-van-ban-tieng-viet-voi-tesseract-ocr/). Chú ý: Nếu có hỏi ghi đè file vie.traineddata có sẵn trong folder ấy thì các […]

    Reply
  5. Hoàng Đình Thi says:
    August 28, 2019 at 11:05 am

    em chỉ là dân backend. nhưng rất có hứng thú đọc cái bài anh viết. :))). như là cách hiểu được hơn ML. Cảm ơn anh

    Reply
    1. Nguyễn Chiến Thắng says:
      August 28, 2019 at 12:06 pm

      Cảm ơn em ủng hộ! Chúc em thành công nhé!

      Reply
  6. Võ Châu Anh Khoa says:
    September 24, 2019 at 9:48 am

    hình như tesseract cũng không hỗ trợ bỏ dấu hả ảnh. Em thấy đoạn văn bản nó xuất ra không có dấu

    Reply
    1. Nguyễn Chiến Thắng says:
      September 24, 2019 at 2:35 pm

      Có chứ em. Data của em ntn? Post lên group xem nhé.

      Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup

      Reply
      1. Võ Châu Anh Khoa says:
        September 25, 2019 at 12:48 pm

        em dùng vie.traineddata á anh, em chỉ test 1 đoạn văn bản tiếng việt thôi, nhưng output nó xuất ra kết quả dấu không đúng lắm

        Reply
        1. Nguyễn Chiến Thắng says:
          September 25, 2019 at 12:54 pm

          Uhm. Có gì em cứ post lên group xem. A thử thì nhận dấu đầy đủ.

          Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup

          Reply
  7. Nhận diện biển số xe bằng WPOD và Tesseract OCR - Mì AI says:
    December 21, 2019 at 9:23 am

    […] theo chính xác các bước cài đặt trong Phần 1 của bài về Tesseract tại link này: https://miai.vn/2019/08/22/ocr-nhan-dang-van-ban-tieng-viet-voi-tesseract-ocr/ nhé. Mình nhấn mạnh là chỉ cần làm Phần 1 […]

    Reply
  8. toni says:
    February 27, 2020 at 7:57 am

    anh cho em hỏi :
    làm sao để em hiển thị được font chữ tiếng việt trên ảnh aj?

    Reply
    1. Nguyễn Chiến Thắng says:
      February 27, 2020 at 9:29 am

      Em load font tiếng Việt trước khi putText là okie.
      # Use simsum.ttc to write Chinese.
      fontpath = “./simsun.ttc”
      font = ImageFont.truetype(fontpath, 32)
      img_pil = Image.fromarray(img)
      draw = ImageDraw.Draw(img_pil)
      draw.text((50, 100), “国庆节/中秋节 快乐!”, font = font, fill = (b, g, r, a))
      img = np.array(img_pil)

      Cần trao đổi thêm em post bài lên group cho tiện trao đổi nhé. Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup

      Reply
      1. chung says:
        July 2, 2021 at 11:21 pm

        load font tiếng việt như thế nào anh

        Reply
        1. Nguyễn Chiến Thắng says:
          July 13, 2021 at 2:22 pm

          Em post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup trao đổi cho tiện nhé!

          Reply
  9. Bảo says:
    April 13, 2020 at 1:02 pm

    Anh ơi cho em hỏi:
    Đối với các ảnh có đoạn ký tự bắt đầu bằng số ( vd như biển số nhà) thì lại không trích xuất được nội dung ra cmd vậy ạ ?

    Reply
    1. Nguyễn Chiến Thắng says:
      April 14, 2020 at 2:18 am

      Thế ah? Mình chưa gặp tình huống đó. Bạn thử chụp và post lên group xem.
      Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup

      Reply
  10. Nguyên says:
    April 14, 2020 at 3:26 pm

    Anh ơi cho em hỏi : Em muốn làm trên google colab thì phải làm sao ạ?

    Reply
    1. Nguyễn Chiến Thắng says:
      April 15, 2020 at 2:01 am

      Bạn chụp màn hình và up lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup nhé cho tiện trao đổi!

      Reply
  11. Trần Luân says:
    April 29, 2020 at 5:12 am

    máy báo:
    C:\WINDOWS\system32>tesseract -v
    ‘tesseract’ is not recognized as an internal or external command,
    operable program or batch file.
    làm ơn hướng dẫn mình cách đặt file PATH cho phù hợp nhé. thanks!

    Reply
    1. Nguyễn Chiến Thắng says:
      May 1, 2020 at 8:25 am

      Bạn post lên group để cùng trao đổi cho tiện nhé: Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup

      Reply
  12. Nguyễn Duy Tâm says:
    August 25, 2020 at 3:35 am

    Dạ a cho em xin bài viết: Nhận dạng chữ viết Tiếng Việt với OCR dùng RCNN, có Code Python demo không anh!
    Em xin cám ơn anh!

    Reply
    1. Nguyễn Chiến Thắng says:
      August 25, 2020 at 4:24 am

      Hiện anh chưa có bài đó. Em có thể lên Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup để hỏi thêm các kỹ thuật cần thiết nhé!

      Reply
  13. Tuấn says:
    December 4, 2020 at 8:19 am

    Hi Mì AI,
    Cho mình hỏi nhờ chút là với CMND hoặc CCCD của việt Nam thì bằng cách mà bạn hướng dẫn thì tỷ lệ đọc chính xác có cao không nhỉ ? và cho mình hỏi nhờ thêm 1 chút là do đặc thù của CMND bằng giấy nên chất lượng hơi kém dẫn đến việc dãy số CMND hơi bị mờ thì liệu phương pháp này có đọc được không ạ.

    Tks Mì AI

    Reply
    1. Nguyễn Chiến Thắng says:
      December 7, 2020 at 6:10 am

      Vấn đề CMND là vấn đề khó hơn bài này rất nhiều. Bạn post lên Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup để cùng trao đổi nhé!

      Reply
  14. Tuna Đặng says:
    October 26, 2021 at 10:00 pm

    khi chạy code phải ấn: “python py_ocr.py -i miai.png -p thresh”
    vậy có cách nào chạy: “python py_orc.py” không vậy a

    Reply
    1. Nguyễn Chiến Thắng says:
      November 1, 2021 at 3:52 pm

      Bạn hardcode các biến kia vào source là okie. Cần thêm bạn post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup nhé!

      Reply
  15. Huân Vương says:
    November 23, 2021 at 8:56 pm

    khi cài em bị lỗi ‘tesseract’ is not recognized as an internal or external command,
    operable program or batch file.
    Bây giờ phải làm sao để cài đặt được ạ. Thân!

    Reply
    1. Nguyễn Chiến Thắng says:
      December 3, 2021 at 8:55 pm

      Em post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup trao đổi cho dễ nha!

      Reply
  16. tesseract ocr là gì (nghĩa) - hieuthem says:
    November 24, 2021 at 12:16 pm

    […] Nhận dạng Tiếng Việt bằng thư viện Tesseract OCR- Mì AI […]

    Reply
Show Comments

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • Tìm hiểu và cài đặt OpenClaw – trợ lý ảo 24/7 thông minh đa chức năng – Mì Ai
  • Dùng thử Pika – robot học Tiếng Anh cho trẻ cực đỉnh – Mì AI
  • TopView.AI 4.0 – nền tảng tạo AI video cộng tác bá đạo – Mì AI
  • Storm MCP – giải pháp nhanh gọn nhẹ để có MCP Server trong 5 phút – Mì AI
  • VoxCPM thử voice cloning với checkpoint finetune Tiếng Việt – Mì AI

Recent Comments

  1. Chủ tiệm Mì on Thử xây dựng hệ thống Agentic AI với LangGraph – Mì AI
  2. Nguyễn Chiến Thắng on [Nhận diện biển số xe] Chương 3 – Phát hiện biển số bằng OpenCV thuần
  3. Trần Sơn Dương on [Nhận diện biển số xe] Chương 3 – Phát hiện biển số bằng OpenCV thuần
  4. Salomon on [CV] Thử làm model cảnh báo ngủ gật cho tài xế oto bằng Dlib và Resnet
  5. khang on Xây dựng hệ thống nhận diện thủ ngữ – ngôn ngữ ký hiệu tay – để giao tiếp với người khuyết tật

Categories

  • Basic
  • Computer Vision
  • Data Science – Data Analysis
  • Generative AI
  • MÌ ÚP
  • Natural Language Processing
  • RNN-LSTM-GRU
  • Share Data

Là người đi trước, hãy biết đưa tay lại phía sau.

Nguyễn Chiến Thắng
Cảm ơn các bạn đã ủng hộ Mì AI!