Dò tìm chứng minh thư trong ảnh


#1

Chào các anh chị , em là thành viên mới , em đang làm đề tài nhận diện chứng minh thư ,cho em hỏi : 1.Các bước tiền xử lý ảnh của em gồm : +cvt gray +gaussian blur

  • canny edge ==> các anh hay dùng những bước tiền xử lý nào cho 1 ảnh ạ ,em có thiếu sót gì không vì các cmnd đươc chụp trong các điều kiên sangs khác nhau.

2.Em muốn detect nhiều cmnd , em có dùng opencv nhưng chỉ làm đúng 1 vài ảnh , vậy em phải làm những bước gì để có thể làm được với nhiều ảnh ạ.Em xin cảm ơn


#2

Bài toán của e là detect cmt từ ảnh hay có ảnh của 1 cmt rồi detect nội dung cmt? Nói chung pre processing thì phụ thuộc vào ảnh của e, có thể là binarization, deskew, remove noise, tăng contrast… mỗi trường hợp e có thể google code opencv. Em phải đưa ví dụ ảnh của e thi mọi người mới dễ hiểu bài toán và giúp e đc


#3

Bài toán của em là , em có CMND của khách hàng , ảnh có cả background ,nhiệm vụ của em là : detect vùng chứng minh thư , rồi sau đó em lấy các thông tin như số cmnd , tên , ngày sinh… , em có thử open cv nhưng chỉ được cho 3 4 ảnh /50 ảnh , em muốn làm cho hàng loạt ảnh thì em nên làm những gì ạ .


#4

Bài toán này nhiều người làm. 3-4/50 (chắc cho phần detection cmt từ ảnh gốc? ) thì hơi thấp. Em đưa/giải thích thuật toán e (code hoặc pseudo code + ảnh ví dụ) mọi người góp ý cho


#6

Đưa thông tin cá nhân người khác lên ntn là vi phạm luật ANM em ơi… cố gắng xóa mấy chỗ nhạy cảm nếu có thể :smile:


#7

đây là 1 ảnh em ví dụ từ google , về giải thuật như em trình bày từ trên , em biến ảnh gray , gaussian blur , canny edge để tìm viền , sau đó em dùng find contour để cắt vùng ảnh , trong bài của em em thấy khi đến bước canny edge , nhiều ảnh của em không hiện được viền vuông trọn vẹn (3/4 cạnh ) , đôi khi ảnh có background gây nhiễu , ví dụ như kẻ sọc , nên em khá bị rối ạ


#8


#9

Em có tìm hiểu , thì có hướng dẫn bảo dùng deep learning , em mới tìm hiểu về lĩnh vực này , vậy cho em hỏi em nên làm các bước như thế nào ạ , em cảm ơn


#10

Những trường hợp nhiễu khó thì deep chắc tốt hơn. Em cỏ thể train 1 object detection/segmentation model. Nhưng đk là e phải có ground truth, nghĩa là có nhiều ảnh có sẵn label (contours) của cmt rồi.


#11

Dạ vâng , nếu em có gì thắc mắc có thể hỏi anh ở đâu ạ :vvv


#12

Có gì cứ inbox anh nhé.


#13

bạn có thể dùng deeplearning cho bài toàn detect, có một số mạng có thể đọc như yolo(hình như hiện tại có 3 phiên bản) nếu bạn muốn ứng dụng chạy real-time, hoặc muốn chính xác thì có thể dùng mạng như faster-RCNN, Restinanet,… Tuy nhiên thì bạn cần gán nhãn (hay là vẽ box) cho các ảnh input. Bạn có thể dùng tool này để bouding box


#14

Em cảm ơn anh :vvvvvvvvvvvvvvvvv


#15

Bạn có thể sử dụng tesseract của Google nữa: https://github.com/tesseract-ocr


#16

Để câu hỏi được cụ thể hơn, em nên đổi ‘Hỏi về Computer Vision’ thành ‘Dò tìm chứng mình thư trong ảnh’ hoặc tiêu đề nào đó gần với câu hỏi hơn.


#17

Mình cũng đang giải quyết bài toán này. Mình đc sếp giao và làm thử khi có thời gian rảnh thôi chứ không có mấy kiến thức bên CV :(. Pipeline hiện tại mình đặt ra là:

  • Text localization: Hiện tại mình đang dùng source này để xử lý. Khá là ok https://github.com/eragonruan/text-detection-ctpn
  • Crop text: OpenCV
  • Preprocessing: Phần này cũng dùng một số thuật toán trong openCV nhưng ko flexible lắm vì mỗi ảnh sẽ có độ sáng, góc chụp khác nhau. Mình nghĩ đến việc cải thiện bức ảnh bằng các model về image super-resolution nhưng không khả quan là mấy. Hiện tại đang bế tắc phần này và không có giải pháp :(.
  • Text recognition: mình dùng Tesseract, độ chính xác cũng tương đối, tất nhiên là sẽ phụ thuộc vào chất lượng ảnh. Một số phương án mình nghĩ đến như tự tạo ảnh theo font và mục đích bạn tách chữ (lấy ngày sinh, địa chỉ hay họ tên) rồi train lại model chuyên cho domain đó.
  • Postprocessing: tạo một language model để correct hoặc regex để lấy ra những thông tin cần thiết.

Mình cũng đang cần thêm thông tin vì mình cũng không biết gì nhiều và thử làm theo kiểu chắp vá thôi. Hy vọng được học thêm, nhận thêm lời khuyên và giao lưu với các bạn/anh/chị có kinh nghiệm về bài toán này.


#18

Xin chào,

tình cờ là team mình cũng làm đề tài này và đã giải quyết xong cho cả cmnd cũ mới + căn cước. Độ chính xác đạt được hiện tại rất cao với deep learning nhưng rất tiếc ko thể chia sẻ chi tiết cho bạn vì là sản phẩm thương mại hóa. Mình chỉ có thể có vài lời khuyên:

  • gần như bạn không thể có nhiều data thực tế để train các model (vì data này khá nhạy cảm) nên cố gắng pre-processing tốt nhất có thể, tất nhiên là độ chính xác sẽ vẫn rất hạn chế
  • chuyển hướng làm việc với căn cước trước vì sẽ dễ hơn rất nhiều
  • hướng của bạn duy_pham rất hay để bạn tìm hiểu, tesseract khá kém đặc biệt là cho cmnd cũ, font máy chữ, bạn nên thử những bộ ocr mới hơn
  • đề tài này mới nhìn thì có vẻ đơn giản nhưng trong điều kiện cmnd cũ của vn mình thì lại là cực khó, đặc biệt khi bạn muốn sử dụng dễ dàng trong thực tế là chụp ảnh rồi xử lý chứ không phải scan. Đối với sinh viên mình nghĩ nên giới hạn lại đề tài 1 chút sẽ thực tế hơn

Cuối cùng xin phép quảng cáo 1 tí :slight_smile:, sản phẩm của bọn mình được nhắc tới trong bài báo này https://tinhte.vn/threads/cac-giai-phap-phan-cung-phan-mem-moi-cua-fpt-ai-nhan-giong-noi.2849387/#post-52222083


#19

Mình xin chia sẻ ít kinh nghiệm như sau: Cách 1: Sử dụng kĩ thuật sử lý ảnh truyền thống, lọc lấy các thông tin cần thiết, align lại ảnh, tìm ra vùng đặc trưng. Cái này cần có kinh nghiệm và thử nghiệm, ví dụ như một ảnh dưới đây, có đầy đủ các bước xử lý kiểu technique.

Cách 2: Mình nghĩ là nên dùng, hãy dùng deeplearning để detect vùng chứa cmnd trước (object detection) sau đó tìm từng vùng có thông tin cần thiết (vd số cmnd) rồi cho vào 1 bộ OCR (optical character recognition) để tìm ra thông tin text trong vùng đó là gì.


#20

Để làm đại trà ,kiểu app thì em nên dùng mảng nào ạ , vad cách 1 của anh độ chính xác là bao nhiêu ạ


#21

Dùng deep learning cần tiền xử lý nhiều không ạ