Hướng dẫn detect text orientation in image python - phát hiện hướng văn bản trong python hình ảnh
Một thành phần thiết yếu của bất kỳ hệ thống OCR nào là tiền xử lý hình ảnh - hình ảnh đầu vào chất lượng bạn có trên động cơ OCR càng cao, đầu ra OCR của bạn sẽ càng tốt. Để thành công trong OCR, bạn cần xem lại bước xử lý trước quan trọng nhất: Định hướng văn bản.image preprocessing — the higher the quality input image you present to the OCR engine, the better your OCR output will be. To be successful in OCR, you need to review arguably the most important pre-processing step: text orientation. Show
Để tìm hiểu cách thực hiện định hướng văn bản với Tesseract và Python, chỉ cần tiếp tục đọc.just keep reading. Định hướng văn bản đề cập đến góc xoay của một đoạn văn bản trong một hình ảnh. Một từ nhất định, câu hoặc đoạn văn sẽ trông giống như một động cơ OCR nếu văn bản được xoay đáng kể. Động cơ OCR là thông minh, nhưng giống như con người, chúng không được đào tạo để đọc lộn ngược! Do đó, bước đầu tiên quan trọng trong việc chuẩn bị dữ liệu hình ảnh của bạn cho OCR là phát hiện hướng văn bản (nếu có) và sau đó sửa hướng văn bản. Từ đó, bạn có thể trình bày hình ảnh đã sửa cho động cơ OCR của bạn (và lý tưởng nhất có độ chính xác OCR cao hơn). Mục tiêu học tậpTrong hướng dẫn này, bạn sẽ học:
Định cấu hình môi trường phát triển của bạnĐể làm theo hướng dẫn này, bạn cần cài đặt thư viện OpenCV trên hệ thống của bạn. May mắn thay, OpenCV không thể cài đặt được: $ pip install opencv-contrib-python Nếu bạn cần trợ giúp định cấu hình môi trường phát triển của mình cho OpenCV, tôi khuyên bạn nên đọc hướng dẫn OpenCV cài đặt PIP của tôi - nó sẽ giúp bạn và chạy trong vài phút.pip install OpenCV guide — it will have you up and running in a matter of minutes. Có vấn đề cấu hình môi trường phát triển của bạn?Hình 1: Gặp khó khăn trong việc cấu hình môi trường dev của bạn? Bạn muốn truy cập vào các máy tính xách tay Jupyter được cấu hình sẵn chạy trên Google Colab? Hãy chắc chắn tham gia Đại học Pyimageearch - bạn sẽ tiếp tục và chạy với hướng dẫn này trong vài phút.Having trouble configuring your dev environment? Want access to pre-configured Jupyter Notebooks running on Google Colab? Be sure to join PyImageSearch University — you’ll be up and running with this tutorial in a matter of minutes.Tất cả những gì đã nói, là bạn:
Sau đó tham gia Đại học Pyimageearch ngay hôm nay! Có quyền truy cập vào các máy tính xách tay Jupyter cho hướng dẫn này và các hướng dẫn PyimageSearch khác được cấu hình sẵn để chạy trên hệ sinh thái Google Colab, ngay trong trình duyệt web của bạn! Không cần cài đặt.pre-configured to run on Google Colab’s ecosystem right in your web browser! No installation required. Và tốt nhất, những máy tính xách tay Jupyter này sẽ chạy trên Windows, MacOS và Linux! Định hướng và phát hiện kịch bản là gì?Trước khi chúng tôi tự động phát hiện và chính xác định hướng văn bản với Tesseract, trước tiên chúng tôi cần thảo luận về khái niệm định hướng và phát hiện tập lệnh (OSD). Tesseract có một số chế độ khác nhau mà bạn có thể sử dụng khi tự động phát hiện và văn bản OCR. Một số trong các chế độ này thực hiện OCR toàn diện của hình ảnh đầu vào, trong khi các chế độ khác xuất ra dữ liệu meta như thông tin văn bản, định hướng, v.v. (tức là, các chế độ OSD của bạn). Chế độ OSD của Tesseract sẽ cung cấp cho bạn hai giá trị đầu ra:orientation and script detection (OSD). Tesseract has several different modes that you can use when automatically detecting and OCR’ing text. Some of these modes perform a full-blown OCR of the input image, while others output meta-data such as text information, orientation, etc. (i.e., your OSD modes). Tesseract’s OSD mode is going to give you two output values:
Hình 2 cho thấy một ví dụ về các hướng văn bản khác nhau. Khi ở chế độ OSD, Tesseract sẽ phát hiện các hướng này và cho chúng tôi biết cách sửa hướng. shows an example of varying text orientations. When in OSD mode, Tesseract will detect these orientations and tell us how to correct the orientation. Hình 2. Trong chế độ OSD, Tesseract có thể phát hiện định hướng văn bản và loại tập lệnh. Từ đó, chúng ta có thể xoay văn bản trở lại 0 ° với OpenCV.In OSD mode, Tesseract can detect text orientation and script type. From there, we can rotate the text back to 0° with OpenCV.Một hệ thống viết là một phương pháp trực quan để truyền đạt thông tin, nhưng không giống như lời nói, một hệ thống viết cũng bao gồm khái niệm về việc lưu trữ của người Hồi giáo và chuyển giao kiến thức. Khi chúng tôi đặt bút vào giấy, các nhân vật chúng tôi sử dụng là một phần của hệ thống tập lệnh/viết. Những nhân vật này có thể được chúng tôi và những người khác đọc, do đó truyền đạt và chuyển giao kiến thức từ người viết. Ngoài ra, kiến thức này được lưu trữ trên tờ giấy, có nghĩa là nếu chúng ta chết, kiến thức còn lại trên tờ giấy đó có thể được truyền cho những người khác có thể đọc kịch bản/hệ thống viết của chúng ta. Hình 2 cũng cung cấp các ví dụ về các tập lệnh và hệ thống viết khác nhau, bao gồm tiếng Latin (tập lệnh được sử dụng bằng tiếng Anh và các ngôn ngữ khác) và Abjad (tập lệnh cho tiếng Do Thái giữa các ngôn ngữ khác). Khi được đặt ở chế độ OSD, Tesseract tự động phát hiện hệ thống viết văn bản trong hình ảnh đầu vào. also provides examples of various scripts and writing systems, including Latin (the script used in English and other languages) and Abjad (the script for Hebrew amid other languages). When placed in OSD mode, Tesseract automatically detects the text’s writing system in the input image. Nếu bạn mới sử dụng khái niệm về các tập lệnh/hệ thống viết, tôi thực sự khuyên bạn nên đọc bài viết xuất sắc của Wikipedia, về chủ đề này. Nó có một bài đọc tuyệt vời bao gồm lịch sử của các hệ thống viết và cách họ phát triển. Phát hiện và sửa hướng định hướng văn bản với TesseractBây giờ chúng tôi đã hiểu những điều cơ bản của OSD, hãy để Lừa chuyển sang phát hiện và sửa chữa định hướng văn bản với Tesseract. Chúng tôi sẽ bắt đầu với một đánh giá nhanh về cấu trúc thư mục dự án của chúng tôi. Từ đó, tôi sẽ chỉ cho bạn cách thực hiện hiệu chỉnh định hướng văn bản. Chúng tôi sẽ kết thúc hướng dẫn này với một cuộc thảo luận về kết quả của chúng tôi. Cấu trúc dự ánHãy cùng đi sâu vào cấu trúc thư mục cho dự án này: |-- images | |-- normal.png | |-- rotated_180.png | |-- rotated_90_clockwise.png | |-- rotated_90_counter_clockwise.png | |-- rotated_90_counter_clockwise_hebrew.png |-- detect_orientation.py Tất cả các mã để phát hiện và định hướng văn bản chính xác được chứa trong tập lệnh Thực hiện định hướng văn bản và tập lệnh hiệu chỉnh của chúng tôiHãy bắt đầu thực hiện Trình sửa chữa định hướng văn bản của chúng tôi với Tesseract và OpenCV. Mở một tệp mới, đặt tên cho nó # import the necessary packages from pytesseract import Output import pytesseract import argparse import imutils import cv2 # construct the argument parser and parse the arguments ap = argparse.ArgumentParser() ap.add_argument("-i", "--image", required=True, help="path to input image to be OCR'd") args = vars(ap.parse_args()) Một nhập khẩu mà bạn có thể không nhận ra lúc đầu là lớp PyTesseract từ |-- images | |-- normal.png | |-- rotated_180.png | |-- rotated_90_clockwise.png | |-- rotated_90_counter_clockwise.png | |-- rotated_90_counter_clockwise_hebrew.png |-- detect_orientation.py1 (https://github.com/madmaze/pytesseract). Lớp này chỉ đơn giản chỉ định bốn kiểu dữ liệu bao gồm |-- images | |-- normal.png | |-- rotated_180.png | |-- rotated_90_clockwise.png | |-- rotated_90_counter_clockwise.png | |-- rotated_90_counter_clockwise_hebrew.png |-- detect_orientation.py2 mà chúng tôi sẽ tận dụng. Đối số dòng lệnh Lone của chúng tôi là đầu vào của chúng tôi |-- images | |-- normal.png | |-- rotated_180.png | |-- rotated_90_clockwise.png | |-- rotated_90_counter_clockwise.png | |-- rotated_90_counter_clockwise_hebrew.png |-- detect_orientation.py3 là OCR. Hãy để tải đầu vào ngay bây giờ: # load the input image, convert it from BGR to RGB channel ordering, # and use Tesseract to determine the text orientation image = cv2.imread(args["image"]) rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) results = pytesseract.image_to_osd(rgb, output_type=Output.DICT) # display the orientation information print("[INFO] detected orientation: {}".format( results["orientation"])) print("[INFO] rotate by {} degrees to correct".format( results["rotate"])) print("[INFO] detected script: {}".format(results["script"])) Các dòng 16 và 17 Tải đầu vào của chúng tôi |-- images | |-- normal.png | |-- rotated_180.png | |-- rotated_90_clockwise.png | |-- rotated_90_counter_clockwise.png | |-- rotated_90_counter_clockwise_hebrew.png |-- detect_orientation.py3 and swap color channels so that it is compatible with Tesseract. Từ đó, chúng tôi áp dụng định hướng và phát hiện tập lệnh (OSD) cho hình ảnh |-- images | |-- normal.png | |-- rotated_180.png | |-- rotated_90_clockwise.png | |-- rotated_90_counter_clockwise.png | |-- rotated_90_counter_clockwise_hebrew.png |-- detect_orientation.py5 trong khi chỉ định |-- images | |-- normal.png | |-- rotated_180.png | |-- rotated_90_clockwise.png | |-- rotated_90_counter_clockwise.png | |-- rotated_90_counter_clockwise_hebrew.png |-- detect_orientation.py6 (dòng 18) của chúng tôi. Sau đó, chúng tôi hiển thị thông tin định hướng và tập lệnh trong thiết bị đầu cuối (có trong từ điển |-- images | |-- normal.png | |-- rotated_180.png | |-- rotated_90_clockwise.png | |-- rotated_90_counter_clockwise.png | |-- rotated_90_counter_clockwise_hebrew.png |-- detect_orientation.py7) bao gồm:orientation and script detection (OSD) to the |-- images | |-- normal.png | |-- rotated_180.png | |-- rotated_90_clockwise.png | |-- rotated_90_counter_clockwise.png | |-- rotated_90_counter_clockwise_hebrew.png |-- detect_orientation.py5 image while specifying our |-- images | |-- normal.png | |-- rotated_180.png | |-- rotated_90_clockwise.png | |-- rotated_90_counter_clockwise.png | |-- rotated_90_counter_clockwise_hebrew.png |-- detect_orientation.py6 (Line 18). We then display the orientation and script information in the terminal (contained in the |-- images | |-- normal.png | |-- rotated_180.png | |-- rotated_90_clockwise.png | |-- rotated_90_counter_clockwise.png | |-- rotated_90_counter_clockwise_hebrew.png |-- detect_orientation.py7 dictionary) including:
Đưa ra thông tin này, tiếp theo, chúng tôi sẽ sửa định hướng văn bản: # rotate the image to correct the orientation rotated = imutils.rotate_bound(image, angle=results["rotate"]) # show the original image and output image after orientation # correction cv2.imshow("Original", image) cv2.imshow("Output", rotated) cv2.waitKey(0) Sử dụng phương pháp Imutils |-- images | |-- normal.png | |-- rotated_180.png | |-- rotated_90_clockwise.png | |-- rotated_90_counter_clockwise.png | |-- rotated_90_counter_clockwise_hebrew.png |-- detect_orientation.py8 của tôi (http://pyimg.co/vebvn), chúng tôi xoay hình ảnh đảm bảo rằng toàn bộ hình ảnh vẫn hiển thị hoàn toàn trong kết quả (dòng 28). Nếu chúng tôi sử dụng phương pháp |-- images | |-- normal.png | |-- rotated_180.png | |-- rotated_90_clockwise.png | |-- rotated_90_counter_clockwise.png | |-- rotated_90_counter_clockwise_hebrew.png |-- detect_orientation.py9 chung của OpenCV, các góc của hình ảnh sẽ bị cắt. Cuối cùng, chúng tôi hiển thị cả hình ảnh gốc và hình ảnh cho đến khi nhấn phím (dòng 32-34).Line 28). Had we used OpenCV’s generic |-- images | |-- normal.png | |-- rotated_180.png | |-- rotated_90_clockwise.png | |-- rotated_90_counter_clockwise.png | |-- rotated_90_counter_clockwise_hebrew.png |-- detect_orientation.py9 method, the corners of the image would have been cut off. Finally, we display both the original and rotated images until a key is pressed (Lines 32-34). Định hướng văn bản và kết quả hiệu chỉnhBây giờ chúng tôi đã sẵn sàng để áp dụng văn bản OSD! Mở thiết bị đầu cuối và thực hiện lệnh sau: $ python detect_orientation.py --image images/normal.png [INFO] detected orientation: 0 [INFO] rotate by 0 degrees to correct [INFO] detected script: Latin Hình 3 hiển thị kết quả phát hiện tập lệnh và định hướng của chúng tôi. Lưu ý rằng hình ảnh đầu vào chưa được xoay, ngụ ý hướng là 0 °. Không cần điều chỉnh xoay. Kịch bản sau đó được phát hiện dưới dạng tiếng Latin. displays the results of our script and orientation detection. Notice that the input image has not been rotated, implying the orientation is 0°. No rotation
correction is required. The script is then detected as “Latin.” Hãy để thử một hình ảnh khác, hình ảnh này với văn bản xoay: $ python detect_orientation.py --image images/rotated_90_clockwise.png [INFO] detected orientation: 90 [INFO] rotate by 270 degrees to correct [INFO] detected script: Latin Hình 4 cho thấy hình ảnh đầu vào gốc, chứa văn bản xoay. Sử dụng Tesseract ở chế độ OSD, chúng ta có thể phát hiện rằng văn bản trong hình ảnh đầu vào có hướng 90 ° - chúng ta có thể sửa hướng này bằng cách xoay hình ảnh 270 ° (tức là, −90 °). Và một lần nữa, tập lệnh được phát hiện là tiếng Latin. shows the original input image, which contains rotated text. Using Tesseract in OSD mode, we can detect that the text in the input image has an orientation of 90°— we can correct this orientation by rotating the image 270°(i.e., −90°). And once again, the detected script is Latin. Hình 4. Như bạn có thể thấy, đầu vào không được định hướng theo cách chúng ta đọc từ bên này sang bên kia. Tesseract và OSD phát hiện ra rằng hình ảnh được xoay 90 °. Từ đó, chúng tôi sử dụng OpenCV để xoay hình ảnh 90 ° để chống lại và định hướng lại hình ảnh.As you can see, the input is not oriented in the way that we read side-to-side. Tesseract and OSD detect that the image is rotated 90°. From there, we use OpenCV to rotate the image 90° to counteract and re-orient the image.Chúng tôi sẽ kết thúc hướng dẫn này với một ví dụ cuối cùng, đây là một trong những văn bản không phải là Latin: $ python detect_orientation.py \ --image images/rotated_90_counter_clockwise_hebrew.png [INFO] detected orientation: 270 [INFO] rotate by 90 degrees to correct [INFO] detected script: Hebrew Hình 5 cho thấy hình ảnh văn bản đầu vào của chúng tôi. Sau đó, chúng tôi phát hiện tập lệnh (tiếng Do Thái) và sửa hướng của nó bằng cách xoay văn bản 90 °. shows our input text image. We then detect the script (Hebrew) and correct its orientation by rotating the text 90°. Hình 5. Tesseract có thể phát hiện rằng hình ảnh đầu vào tiếng Do Thái này được xoay 270 ° với OSD. Chúng tôi sử dụng OpenCV để xoay hình ảnh bằng 90 ° để khắc phục vấn đề định hướng này.Tesseract can detect that this Hebrew input image is rotated 270° with OSD. We use OpenCV to rotate the image by 90° to correct this orientation problem.Như bạn có thể thấy, Tesseract làm cho văn bản OSD trở nên dễ dàng! Cái gì tiếp theo? Tôi đề nghị Đại học Pyimageearch.Thông tin khóa học: 53+ Tổng số lớp • 57 giờ video hướng dẫn theo yêu cầu • Cập nhật lần cuối: Tháng 10 năm 2022 Tôi tin tưởng mạnh mẽ rằng nếu bạn có một giáo viên phù hợp, bạn có thể làm chủ tầm nhìn máy tính và học sâu. Bạn có nghĩ rằng việc học tầm nhìn máy tính và học tập sâu phải tốn thời gian, quá sức và phức tạp? Hoặc phải liên quan đến toán học và phương trình phức tạp? Hoặc yêu cầu bằng cấp về khoa học máy tính? Đó không phải là trường hợp. Tất cả những gì bạn cần để làm chủ tầm nhìn máy tính và học tập sâu là để ai đó giải thích mọi thứ với bạn bằng các thuật ngữ đơn giản, trực quan. Và đó chính xác là những gì tôi làm. Nhiệm vụ của tôi là thay đổi giáo dục và các chủ đề trí tuệ nhân tạo phức tạp được dạy như thế nào. Nếu bạn nghiêm túc về việc học tầm nhìn máy tính, điểm dừng tiếp theo của bạn sẽ là Đại học Pyimageearch, tầm nhìn máy tính toàn diện nhất, học sâu và khóa học OpenCV trực tuyến ngày hôm nay. Tại đây, bạn sẽ học cách áp dụng thành công và tự tin tầm nhìn máy tính vào công việc, nghiên cứu và dự án của bạn. Tham gia với tôi trong Mastery Mastery Mastery. Bên trong Đại học Pyimageearch, bạn sẽ tìm thấy:
Bấm vào đây để tham gia Đại học Pyimageearch Bản tóm tắtTrong hướng dẫn này, bạn đã học cách thực hiện phát hiện và hiệu chỉnh định hướng văn bản tự động bằng cách sử dụng chế độ định hướng và phát hiện tập lệnh Tesseract (OSD). Chế độ OSD cung cấp cho chúng tôi dữ liệu meta của văn bản trong hình ảnh, bao gồm cả định hướng văn bản ước tính và phát hiện hệ thống tập lệnh/viết. Định hướng văn bản đề cập đến góc (tính bằng độ) của văn bản trong hình ảnh. Khi thực hiện OCR, chúng ta có thể có được độ chính xác cao hơn bằng cách sửa cho hướng văn bản. Mặt khác, phát hiện kịch bản đề cập đến hệ thống viết của văn bản, có thể là tiếng Latin, Hanzi, tiếng Ả Rập, tiếng Do Thái, v.v.estimated text orientation and script/writing system detection. The text orientation refers to the angle (in degrees) of the text in the image. When performing OCR, we can obtain higher accuracy by correcting for the text orientation. Script detection, on the other hand, refers to the writing system of the text, which could be Latin, Hanzi, Arabic, Hebrew, etc. Muốn tín dụng GPU miễn phí để đào tạo các mô hình?
Trong học tập sâu, chúng ta cần đào tạo mạng lưới thần kinh. Những mạng lưới thần kinh này có thể được đào tạo trên CPU nhưng mất rất nhiều thời gian. Hơn nữa, đôi khi các mạng này thậm chí không phù hợp (chạy) trên CPU. Để khắc phục vấn đề này, chúng tôi sử dụng GPU. Vấn đề là những GPU này rất tốn kém và nhanh chóng trở nên lỗi thời.GPUs. The problem is these GPUs are expensive and become outdated quickly. GPU là tuyệt vời vì họ lấy mạng lưới thần kinh của bạn và đào tạo nó nhanh chóng. Vấn đề là GPU rất tốn kém, vì vậy bạn không muốn mua một cái và thỉnh thoảng chỉ sử dụng nó. Cloud GPU cho phép bạn sử dụng GPU và chỉ trả tiền cho thời gian bạn đang chạy GPU. Đó là một ý tưởng tuyệt vời giúp bạn tiết kiệm tiền.only pay for the time you are running the GPU. It’s a brilliant idea that saves you money. Jarvislabs cung cấp GPU tốt nhất trong lớp và sinh viên Đại học PyimageSearch có được từ 10-50 giờ trên GPU đẳng cấp thế giới (thời gian phụ thuộc vào GPU cụ thể mà bạn chọn). provides the best-in-class GPUs, and PyImageSearch University students get between 10-50 hours on a world-class GPU (time depends on the specific GPU you select). Điều này cho bạn cơ hội để lái thử một GPU mạnh mẽ một cách quái dị trên bất kỳ hướng dẫn nào của chúng tôi trong một trò hề. Vì vậy, tham gia Đại học Pyimageearch ngay hôm nay và tự mình thử nó.test-drive a monstrously powerful GPU on any of our tutorials in a jiffy. So join PyImageSearch University today and try it for yourself. Nhấn vào đây để nhận tín dụng Jarvislabs ngay bây giờ Để tải xuống mã nguồn cho bài đăng này (và được thông báo khi các hướng dẫn trong tương lai được xuất bản tại đây trên PyimageSearch), chỉ cần nhập địa chỉ email của bạn trong biểu mẫu bên dưới! Tải xuống mã nguồn và hướng dẫn tài nguyên 17 trang miễn phíNhập địa chỉ email của bạn dưới đây để nhận .Zip của mã và hướng dẫn tài nguyên 17 trang miễn phí về tầm nhìn máy tính, openCV và học sâu. Bên trong bạn sẽ tìm thấy các hướng dẫn, sách, khóa học và thư viện được chọn bằng tay của tôi để giúp bạn thành thạo CV và DL!FREE 17-page Resource Guide on Computer Vision, OpenCV, and Deep Learning. Inside you'll find my hand-picked tutorials, books, courses, and libraries to help you master CV and DL! Làm cách nào để kiểm tra định hướng văn bản?Bạn có thể sử dụng biến đổi Hough để phát hiện các đường dài nhất trong hình ảnh của bạn và sau đó tìm thấy độ dốc chiếm ưu thế của các dòng đó.Nếu độ dốc gần bằng không, văn bản của bạn nằm ngang;Nếu nó gần với vô cực, văn bản của bạn là thẳng đứng.use the Hough Transform to detect the longest lines in your image and then find the predominant slope of those lines. If the slope is close to zero, your text is horizontal; if it's close to infinity, your text is vertical.
Làm thế nào để bạn kiểm tra xem hình ảnh có lộn ngược Python không?Có thể phát hiện định hướng bằng Tesseract (pytesseract cho Python), nhưng chỉ có thể khi hình ảnh chứa rất nhiều ký tự.Nếu tài liệu chứa đủ các ký tự, Tesseract có thể phát hiện định hướng.Tesseract (pytesseract for Python), but it is only possible when the image contains a lot of characters. If the document contains enough characters, it is possible for Tesseract to detect the orientation.
OSD trong pytesseract là gì?Chế độ OSD cung cấp cho chúng tôi dữ liệu meta của văn bản trong hình ảnh, bao gồm cả định hướng văn bản ước tính và phát hiện hệ thống tập lệnh/viết.Định hướng văn bản đề cập đến góc (tính bằng độ) của văn bản trong hình ảnh.provides us with meta-data of the text in the image, including both estimated text orientation and script/writing system detection. The text orientation refers to the angle (in degrees) of the text in the image.
Pytesseract có miễn phí không?Tesseract là một công cụ nhận dạng ký tự quang học cho các hệ điều hành khác nhau.Đó là phần mềm miễn phí, được phát hành theo giấy phép Apache.free software, released under the Apache License. |