Xin chào các bạn, bài viết hôm nay mình sẽ hướng dẫn các bạn cách DeCaptcha sử dụng thư viện AForge. NET in Csharp setting Show Chắc chắn các bạn ai cũng biết Captcha là gì? Hiện tại, thì bài viết này chắc cũng ít ứng dụng, vì vậy giờ đa số các website đều sử dụng thư viện Recaptcha API của Google Nhưng bài viết này, mình viết để các bạn tham khảo Vậy Decaptcha là gì? Decptcha là cách chúng ta giải mã hình ảnh của Captcha thành chuỗi (chuỗi) để điền vào biểu mẫu để mình tự động gửi yêu cầu http Nhận dạng ký tự quang học (OCR) là quá trình chuyển đổi văn bản in thành biểu diễn kỹ thuật số. Nó có tất cả các loại ứng dụng thực tế — từ số hóa sách in, tạo hồ sơ điện tử về biên lai, đến nhận dạng biển số và thậm chí phá vỡ CAPTCHA dựa trên hình ảnh Tesseract là một chương trình nguồn mở để thực hiện OCR. Bạn có thể chạy nó trên các hệ thống *Nix, Mac OSX và Windows, nhưng sử dụng thư viện, chúng tôi có thể sử dụng nó trong các ứng dụng PHP. Hướng dẫn này được thiết kế để chỉ cho bạn cách Cài đặtSự chuẩn bịĐể giữ mọi thứ đơn giản và nhất quán, chúng tôi sẽ sử dụng Máy ảo để chạy ứng dụng mà chúng tôi sẽ cung cấp bằng Vagrant. Điều này sẽ đảm nhiệm việc cài đặt PHP và Nginx, mặc dù chúng tôi sẽ cài đặt riêng Tesseract để minh họa quy trình Nếu bạn muốn cài đặt Tesseract trên hệ thống dựa trên Debian hiện có của riêng mình, bạn có thể bỏ qua phần tiếp theo này — hoặc truy cập README để biết hướng dẫn cài đặt trên các hệ thống *nix khác, Mac OSX (gợi ý — sử dụng MacPorts. ) hoặc Windows Thiết lập mơ hồĐể thiết lập Vagrant để bạn có thể làm theo hướng dẫn, hãy hoàn thành các bước sau. Ngoài ra, bạn chỉ cần lấy mã từ Github Nhập lệnh sau để tải xuống cấu hình Homestead Cải tiến Vagrant vào thư mục có tên 9
Hãy thay đổi cấu hình Nginx trong 0 từ
…đến…
Bạn cũng cần thêm phần sau vào tệp máy chủ của mình
Cài đặt nhị phân TesseractBước tiếp theo là cài đặt tệp nhị phân Tesseract Vì Homestead Cải tiến sử dụng bản phân phối Linux dựa trên Debian, chúng tôi có thể sử dụng 1 để cài đặt nó sau khi đăng nhập vào máy ảo bằng 2. Nó đơn giản như chạy lệnh sau________số 8Như tôi đã đề cập ở trên, có hướng dẫn cho các hệ điều hành khác trong README Kiểm tra và tùy chỉnh cài đặtChúng ta sẽ sử dụng trình bao bọc PHP, nhưng trước khi bắt đầu xây dựng, chúng ta có thể kiểm tra xem Tesseract có hoạt động không bằng cách sử dụng dòng lệnh Đầu tiên, nhấp chuột phải và lưu hình ảnh này (Hình ảnh lịch sự của Clipart Panda) Trong VM ( 2), hãy chạy lệnh sau để “đọc” hình ảnh và thực hiện quy trình OCR 0Điều này tạo ra một tệp trong thư mục hiện tại có tên là 4, tất cả đều ổn, phải chứa từ “THẬN TRỌNG”Bây giờ hãy thử với tệp sign2. jpg (Hình ảnh là một phiên bản điều chỉnh của cái này) 2Lần này, bạn sẽ thấy rằng nó được tạo ra từ “Einbahnstral'ie”. Gần đúng, nhưng không đúng — mặc dù văn bản trong hình ảnh khá sắc nét và rõ ràng, nhưng nó không thể nhận ra ký tự eszett (ß) Để Tesseract đọc đúng chuỗi, chúng ta cần cài đặt một số tệp ngôn ngữ mới - trong trường hợp này là tiếng Đức Có một danh sách đầy đủ các tệp ngôn ngữ có sẵn ở đây, nhưng chúng ta hãy tải xuống tệp thích hợp trực tiếp 3…giải nén nó… 4Sau đó sao chép các tập tin vào thư mục sau 5e. g 0Bây giờ hãy chạy lại lệnh trước đó, nhưng sử dụng công tắc 5 như sau 1
Lần này, văn bản phải được xác định chính xác là “Einbahnstraße” Vui lòng thêm các ngôn ngữ bổ sung bằng cách lặp lại quy trình này Thiết lập ứng dụngChúng tôi sẽ sử dụng thư viện trình bao bọc này để sử dụng Tesseract từ PHP Chúng tôi sẽ tạo một ứng dụng web thực sự đơn giản cho phép mọi người tải lên một hình ảnh và xem kết quả của quy trình OCR. Chúng tôi sẽ sử dụng vi khung Silex để triển khai nó - mặc dù đừng lo lắng nếu bạn không quen với nó, vì bản thân ứng dụng sẽ rất đơn giản Hãy nhớ rằng tất cả mã cho hướng dẫn này đều có sẵn trên Github Bước đầu tiên là cài đặt các phụ thuộc bằng Composer 2Bây giờ hãy tạo ba thư mục sau 3Chúng tôi sẽ cần một biểu mẫu tải lên ( 6) 4Và một trang cho kết quả ( 7) 5Bây giờ hãy tạo ứng dụng khung xương Silex ( 8) 6Nếu bạn truy cập ứng dụng trong trình duyệt của mình, bạn sẽ thấy biểu mẫu tải tệp lên. Nếu bạn đang theo dõi và sử dụng Homestead Cải thiện với Vagrant, bạn sẽ tìm thấy nó tại URL sau 7Bước tiếp theo là thực hiện upload file. Silex làm điều này thực sự dễ dàng; . Đây là một số mã để xử lý tệp đã tải lên (lưu ý rằng mã này đi theo lộ trình POST) 8Như bạn có thể thấy, chúng tôi đang tạo một tên tệp gần như ngẫu nhiên để giảm thiểu xung đột tên tệp — nhưng cuối cùng trong ngữ cảnh của ứng dụng này, việc chúng tôi gọi tệp đã tải lên là gì không thực sự quan trọng Khi chúng tôi có một bản sao của tệp trên hệ thống tệp cục bộ, chúng tôi có thể tạo một phiên bản của thư viện Tessearct, chuyển cho nó đường dẫn đến hình ảnh mà chúng tôi muốn phân tích 9Thực hiện OCR trên hình ảnh thực sự đơn giản. Chúng ta chỉ đơn giản gọi phương thức 1 0Cuối cùng, chúng tôi có thể hiển thị trang kết quả, chuyển cho nó kết quả của OCR 1Hãy dùng thử trên một số hình ảnh và xem nó hoạt động như thế nào. Nếu bạn gặp sự cố khi nhận dạng hình ảnh, bạn có thể thấy hữu ích khi tham khảo hướng dẫn về cải thiện chất lượng Một ví dụ thực tếHãy xem xét một ứng dụng thực tế hơn của công nghệ OCR. Trong ví dụ này, chúng tôi sẽ cố gắng tìm và định dạng một số điện thoại được nhúng trong một hình ảnh Hãy xem hình ảnh sau đây và thử tải nó lên ứng dụng của bạn Kết quả sẽ giống như thế này 2Nó không nhận được văn bản nội dung, điều mà chúng tôi có thể mong đợi do chất lượng hình ảnh kém. Nó đã xác định được số điện thoại, nhưng cũng có thêm một số "tiếng ồn" trong đó Để thử và trích xuất thông tin liên quan, có một vài điều chúng ta có thể làm Bạn có thể yêu cầu Tesseract giới hạn đầu ra của nó trong các phạm vi ký tự nhất định. Vì vậy, chúng ta có thể yêu cầu nó chỉ trả về các chữ số bằng cách sử dụng dòng sau 3Có một vấn đề với điều này, tuy nhiên. Thay vì bỏ qua các ký tự không phải là số, thay vào đó, nó thường diễn giải các chữ cái dưới dạng chữ số. Ví dụ: tên “Bob” có thể được hiểu là số “808” Thay vào đó, hãy sử dụng quy trình hai giai đoạn
Đối với phần đầu tiên, chúng ta có thể sử dụng biểu thức chính quy thô sơ. Để thử và xác định xem một chuỗi số có phải là số điện thoại hợp lệ hay không, chúng tôi có thể sử dụng libphonenumber của Google Ghi chú. Tôi đã viết về libphonenumber ở đây trên Sitepoint như một phần của bài viết có tựa đề Làm việc với số điện thoại trong JavaScript Hãy thêm một cổng PHP của thư viện libphonenumber vào tệp 2 của chúng ta 4Đừng quên cập nhật 5Bây giờ chúng ta có thể viết một hàm nhận vào một chuỗi và cố gắng trích xuất một số điện thoại hợp lệ từ chuỗi đó 6Hy vọng rằng các ý kiến sẽ giải thích những gì chức năng đang làm. Lưu ý rằng nếu thư viện không phân tích được một chuỗi số dưới dạng số điện thoại thì nó sẽ đưa ra một ngoại lệ. Đây không phải là một vấn đề như vậy;
Bây giờ chúng ta có thể sử dụng nó như sau 7Chúng tôi cần cung cấp libphonenumber với một "gợi ý" về quốc gia mà số điện thoại được đặt. Bạn có thể muốn thay đổi điều này cho đất nước của bạn Chúng ta có thể kết thúc tất cả những điều này trong một lộ trình mới 8Giờ đây, chúng tôi có cơ sở của một API đơn giản - do đó có phản hồi JSON - mà chúng tôi có thể sử dụng, chẳng hạn như phần cuối của một ứng dụng di động đơn giản để thêm danh bạ hoặc thực hiện cuộc gọi từ một số điện thoại được in Tóm lượcOCR có nhiều ứng dụng — và việc tích hợp vào các ứng dụng của bạn dễ dàng hơn bạn có thể mong đợi. Trong bài viết này, chúng tôi đã cài đặt gói OCR mã nguồn mở; . Chúng tôi mới chỉ thực sự chạm vào bề mặt của những gì có thể, nhưng hy vọng điều này đã cho bạn một số ý tưởng về cách bạn có thể sử dụng công nghệ này trong các ứng dụng của riêng mình Chia sẻ bài viết nàyLukas trắng Lukas là một nhà phát triển web và di động tự do có trụ sở tại Manchester ở miền Bắc nước Anh. Anh ấy đã phát triển PHP kể từ khi rời xa những ngày đầu phát triển web bằng cách sử dụng tất cả các loại công cụ như Trang máy chủ Java, đảo dữ liệu ASP và XML cổ điển, cùng với JavaScript - trở lại thời điểm thực sự là JavaScript và Netscape thống trị. Khi anh ấy không phát triển trang web và ứng dụng di động và phàn nàn rằng đây là tất cả các lĩnh vực, Lukas thích nấu tất cả các loại thức ăn của Thế giới |