Skip to content

HuynhDoTanThanh/bookcase-digitization

Repository files navigation

CS114.L21 - MÁY HỌC

ĐỒ ÁN CUỐI KÌ

Đề tài: SỐ HÓA TỦ SÁCH (bookcase digitization)

1.Giới thiệu

  • Bộ môn: Máy học - CS112.L21
  • Giảng viên:
    • Lê Đình Duy
    • Phạm Nguyễn Trường An
  • Thành viên nhóm:
    • Huỳnh Đỗ Tấn Thành - 19522227 (Leader)
    • Nguyễn Lâm Thảo Vy - 19522547
    • Nguyễn Thị Thúy An - 19521183

2.Mô tả bài toán

  • Bối cảnh ứng dụng: Trong thời đại số hóa, việc đọc hình ảnh chuyển thành dữ liệu có thể xử lý thao tác được trên máy tính không còn xa lạ nữa. Ví dụ như đọc ảnh chưng minh nhân dân chẳng hạn, hay là giấy khai sinh, ... Nhóm chúng em thực hiện đồ án số hóa tủ sách này với mong muốn có thể giải quyết được việc thay vì thao tác nhập tay để lưu thông tin của quyển sách ta có thể đọc từ ảnh chụp.

  • Ưu điểm: Giúp giảm thao tác nhập liệu khi có một kho thư viện khá lớn (vài ngàn cuốn sách) khi muốn lưu thông tin sách lên máy.

  • Nhược điểm: Việc số hóa được một cuốn sách cũng khá là phức tạp. Độ chính xác bị giảm dần qua nhiều thao tác. Có nhìu cuốn sách không thể đọc được như chữ bị khuyết, bị che, chứ lồng vào nhau khá nhiều, chữ xiêng nhiều, chữ chìm, chữ đan xen nhau,... Nên việc số hóa chỉ nên đối với các sách đơn giản hơn.

  • INPUT: Ảnh chụp bìa sách từ camera với chất lượng ảnh tối thiểu là Full HD (720x960).

  • OUTPUT: File CSV chứa thông tin của sách gồm 7 trường dữ liệu:

    • tên file
    • Tên sách
    • Tên tác giả
    • Nhà xuất bản
    • Tập
    • Người dịch
    • Tái bản
  • Pipeline:

Pipeline bookcase digitization

3.Mô tả dữ liệu:

3.1 Thu thập dữ liệu:

3.2 Dán nhãn dữ liệu

  • Vì thời gian thực hiện đồ án có hạn nên nhóm em đã dán nhãn được:

3.3 Thao tác xử lý dữ liệu:

  • Đầu tiên với ảnh thô chụp từ camera dưới nền đen ta dễ dàng contour ảnh từ một số bước xử lý dữ liệu:

    • Resize ảnh.
    • Convert ảnh thành Gray Scale.
    • Sử dụng Gaussian Blur và Candy Blur.
    • Find contour.
    • Lấy ra contour lớn nhất.
    • Lấy ra bốn điểm của countour và cắt ảnh bằng cv2.warpPerspective
  • Tiếp theo đến việc detect object, nhóm em sử dụng model deeplearning của YOLOv5

    • Với 6 label:
      • 0: Tên sách
      • 1: Tên tác giả
      • 2: Nhà xuất bản
      • 3: Tập
      • 4: Người dịch
      • 5: Tái bản
    • Cắt ảnh ra từ những object đã được predict của phần object detection ở trên.
  • Craft:

    • Nhóm em sử dụng model deeplearning đã được train sẵn từ nhiều ngôn ngữ khác nhau: Craft text detector với:
      • text_threshold=0.7
      • link_threshold=0.4
      • low_text=0.3
      • long_size=1280
  • OCR:

    • Chuyển ảnh thành Gray Scale.
    • Nhóm em sử dụng model VietOCR.
    • Sử dụng xoay ảnh để có thể đọc được cả chữ dọc.
    • Xử lý xóa các text không liên quan trong tên sách do các object khác nhau bị chồng lên nhau, ví dụ như trong việc tên sách có cả tên tác giả nếu như trong object tên sách có cả tên tác giả thì ta sẽ xóa tên tác giả có trong tên sách.
  • Lưu kết quả:

    • Thêm vào dataframe và lưu dưới dạng file csv.

3.4 Phân chia (split) - train/dev/test

  • Với model YOLOv5
    • Training data (85%): 5951 labels (tỉ lệ train/val là 8/2)​
      • Tập train: 4745 labels​
      • Tập val: 1206 labels​
    • Testing data (15%): 1031 labels
  • Với model VietOCR thì nhóm em để chia train/val theo tỉ lệ 80/20.
  • Đối với việc đánh giá thì em dành những ảnh chụp thực tế chưa dán nhãn cả phần VietOCR và YOLO chia làm 3 phần: easy(106), medium(147), hard(71)

4.Data:

5.Trainning: Quá trình trainning chia làm hai phần:

  • Object-detection (YOLO): Open In Colab
  • OCR (VietOCR): Open In Colab

About

bookcase-digitization

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published