Hướng dẫn how do i extract handwritten text from an image in python? - làm cách nào để trích xuất văn bản viết tay từ một hình ảnh trong python?

Easyoc là một sự thay thế ở đây! Đầu vào hình ảnh được điều chỉnh và nguồn cấp dữ liệu như bên dưới

Hướng dẫn how do i extract handwritten text from an image in python? - làm cách nào để trích xuất văn bản viết tay từ một hình ảnh trong python?

import cv2
import numpy as np
import easyocr

reader = easyocr.Reader(['en'],gpu = False) # load once only in memory.

image_file_name='handwritten.png' 
image = cv2.imread(image_file_name)

# sharp the edges or image.
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
sharpen_kernel = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]])
sharpen = cv2.filter2D(gray, -1, sharpen_kernel)
thresh = cv2.threshold(sharpen, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
r_easy_ocr=reader.readtext(thresh,detail=0)

Văn bản mẫu in đậm ['prontuario =', '0000069450', 'Service =', '824222', 'Sinh: 12/12/1958', 'Công ước', ' ,, '10/06/2019 ',' 2.31.37 ',' tình dục: ',' nam ',' lời khuyên ',' 41921 ',' anamnese ',' tư vấn khẩn cấp ',' qp: đề cập đến một cái gì đó gãi OD, bắt đầu từ ngày hôm qua, ',' t 1 ',' báo cáo có kính, không có Q mang lại HQJE ',' P 6 ',' HMP: ',' den, ',', 'j', 'deny dm,', 'Sử dụng;' không có gì ',' dị ứng thuốc: phủ nhận ',' ap l ',' phẫu thuật mắt dự đoán: phủ nhận: ',' chấn thương mắt dự đoán: phủ nhận. ',' 2OL50 ',' 0lh ',' 1 ' , 'HMF', 'Lịch sử Nega của bệnh tăng nhãn áp hoặc mù lòa', 'av sc:', 'bio', '3', 'od; 20/50 ', '20/25p với pH', 'oe; 20/50 ', '20/25p với pH', 'Bio qd =', ',' 3. 1 ',' palpebras và tarses sa ',' Ca prof, không có RCA, không có pks, pfr ',' c transp ',' không có góc khu vực ',' pio ',' 1 ',' ce peripupilla lúc 6 giờ sáng ',' Bio oe; ',' oiag ',' 4 ',' palpebras và tarses sa, ',' Ca prof ',' không có rca, không có pks, pfr, ',' c transp, không có khu vực đỏ mặt ',' jto ', '1', 'TBD Bình thường thành', 'CD: CE Retreat', '1', 'chữa bệnh với Regance', 'Regance và Dubricant', 'Định hướng chung', 'trở lại ngay lập tức trở nên tồi tệ hơn', 'Dấu hiệu báo động' '' , 'R1 Vanessa P', 'Jirg'] "bold
['Prontuario=', '0000069450', 'Atendimento=', '824222', 'Nascimento: 12/12/1958', 'Convenio', 'SUS', 'AMBULATORIO', 'Data Atend,', '10/06/2019', '2.31.37', 'Sexo:', 'Masculino', 'Conselho', '41921', 'ANAMNESE', 'CONSULTA URGENCIA', 'QP: REFERE SENSACAO DE ALGO ARRANHANDO EM OD, INICIO ONTEM ,', 'T 1', 'REFERE TER OCULOS, NAQ TROUXE HQJE', 'P 6', 'HMP:', 'NEGA HAS,', 'Ao', 'J', 'NEGA DM,', 'EM USO DE;', 'NADA', 'ALERGIA MEDICAMENTOSA: NEGA', 'Ap L', 'CIRURGIAS OCULARES PREVIA: NEGA:', 'TRAUMA OCULAR PREVIA: NEGA.', '2ol50', '0lh', '1', 'HMF', 'NEGA HISTORIA DE GLAUCOMA OU CEGUEIRA', 'AV SC:', 'Bio', '3', 'OD; 20/50', '20/25P COM PH', 'OE; 20/50', '20/25P COM PH', 'BIO QD=', 'De', '3 . 1', 'PALPEBRAS E TARSOS SA', 'CA PROF, SEM RCA, SEM PKS, PFR', 'C TRANSP', 'SEM AREA CORANDO', 'Pio', '1', 'CE PERIPUPILAR AS 6H', 'BIO OE;', 'Oiag', '4', 'PALPEBRAS E TARSOS SA,', 'CA PROF', 'SEM RCA, SEM PKS, PFR,', 'C TRANSP, SEM AREA CORANDO', 'JTo', '1', 'TBD NORMAL AO', 'CD: RETIRO CE', '1', 'CURATIVO COM REGENCEL', 'REGENCEL E LUBRIFICANTE', 'ORIENTACOES GERAIS', 'RETORNO IMEDIATO SE PIORA', 'SINAIS DE ALARME', 'R1 VANESSA P', 'Jirg']"

Trích xuất văn bản từ các tệp hình ảnh là một kỹ thuật hữu ích để số hóa tài liệu. Có một số động cơ OCR phát triển tốt để trích xuất văn bản in, chẳng hạn như Tesseract và Easyoc [1]. Tuy nhiên, để trích xuất văn bản viết tay, nó khó khăn hơn vì các biến thể lớn trong chữ viết tay từ người này sang người khác. Tesseract và Easyoc có thể đạt được kết quả thỏa mãn trừ khi các văn bản được in bằng tay. Trong bài đăng này, tôi sẽ mô tả cách sử dụng Tesseract để trích xuất các văn bản in và sử dụng API Google Cloud Vision để trích xuất các văn bản viết tay.

Tệp hình ảnh văn bản ví dụ là từ bộ dữ liệu viết tay IAM [2]. Nó có một phiên văn bản in và phiên viết tay cho cùng một nội dung văn bản.

Các công cụ chính sau đây được sử dụng:

OpenCV, để tìm các cấu trúc trong hình ảnh để tự động chia hình ảnh thành các phân đoạn được in và viết tay API Vision Tầm nhìn Cloud, để trích xuất văn bản từ chữ viết tay và pytesseract, để trích xuất văn bản từ phân đoạn in, For finding structures in the images to automatically break the images into printed segments and handwritten segments
Google Cloud Vision API, For extract text from handwriting segment
Tesseract and Pytesseract, For extract text from printed segment

Bước 1. Phân đoạn trang.

Chúng tôi sẽ sử dụng OpenCV để tìm các dòng giữa các phần và sử dụng tọa độ của các dòng để chia hình ảnh thành các phân đoạn. OpenCV có một hàm gọi là getStracturingEuity (). Chúng ta có thể xác định loại cấu trúc là một hình chữ nhật (MORPH_RECT,), chiều rộng tối thiểu (200) và chiều cao (1) của hình chữ nhật để tìm các đường ngang.

Sau đó, chúng ta có thể sử dụng tọa độ của các đường ngang để chia các hình ảnh thành các phân đoạn như hình dưới đây.

Từ các kết quả phân đoạn trên, chúng ta có thể thấy rằng các phân đoạn chứa các văn bản in và viết tay mà chúng ta quan tâm là phân đoạn 2 và 3.

Bước 2. Trích xuất văn bản in

Trong bước này, chúng tôi sẽ sử dụng động cơ Tesseract OCR để trích xuất văn bản in từ một phân đoạn hình ảnh. Nếu bạn đã không cài đặt Tesseracct trên máy của mình, bạn có thể tải xuống tệp cài đặt từ đây.

Bạn cũng sẽ cần cài đặt Thư viện PyTesseract để gọi Tesseract Engine từ Python.

Bây giờ chúng ta có thể sử dụng Tesseract OCR với Python để trích xuất văn bản từ các phân đoạn hình ảnh.

Tesseract OCR không hoạt động tốt trên các văn bản viết tay. Khi chuyển phân đoạn viết tay vào Tesseract, chúng ta sẽ nhận được kết quả đọc rất kém. Xem bên dưới.

Đối với văn bản viết tay, chúng tôi sẽ sử dụng API Google Cloud Vision để có kết quả tốt hơn.

Bước 3. Trích xuất văn bản viết tay bằng API Google Cloud Vision

Để sử dụng API Google Cloud Vision, bạn sẽ cần đăng nhập vào tài khoản Google của mình, tạo dự án hoặc chọn dự án hiện có, sau đó bật API Cloud Vision. Bạn cũng sẽ cần tạo khóa tài khoản dịch vụ và lưu tệp JSON của nó vào ổ đĩa cục bộ của bạn theo hướng dẫn trên Google Cloud.

Bây giờ chúng tôi có thể chỉ định vị trí của tệp JSON có khóa tài khoản dịch vụ và sử dụng tập lệnh Python sau để cung cấp hình ảnh viết tay cho API Google Cloud Vision để trích xuất văn bản từ nó.

Từ các kết quả trên, chúng ta có thể thấy rằng API Google Cloud Vision đã thực hiện một công việc tốt hơn nhiều trong việc trích xuất các văn bản từ các tệp hình ảnh so với Tesseract.

Mã nguồn có thể được tìm thấy trên GitHub: https://github.com/derrickfeiwang/handwriterrecognition_googlecloudvision

Làm cách nào để trích xuất văn bản từ một hình ảnh trong Python?

Trích xuất văn bản từ một hình ảnh duy nhất bằng Python..
Từ hình ảnh nhập khẩu PIL ..
từ pytesseract nhập pytesseract ..
img = hình ảnh.Mở (path_to_image).
Text = pytesseract.Image_to_String (IMG).
print(text).

Làm cách nào để trích xuất chữ viết tay từ một bức ảnh?

Microsoft OneNote là một chương trình ghi chú kỹ thuật số tăng gấp đôi như một ứng dụng OCR viết tay khá tốt.Nhấp chuột phải vào hình ảnh đã nhập và bạn sẽ thấy tùy chọn sao chép văn bản từ hình ảnh.Sử dụng lệnh này để trích xuất các chữ cái từ hình ảnh và chuyển đổi chúng thành văn bản bạn có thể chỉnh sửa.Tùy chọn này hoạt động trong vài giây.Right-click on an imported picture and you'll see the option to Copy Text From Picture. Use this command to extract letters from the image and convert them to text you can edit. This option works in seconds.

Làm cách nào để đọc văn bản viết tay trên ảnh?

Công nghệ OCR đến giải cứu trong tình huống này.Nhận dạng ký tự quang học hoặc đầu đọc ký tự quang học (OCR) là chuyển đổi điện tử hoặc cơ học của hình ảnh của văn bản được đánh máy, viết tay hoặc in thành văn bản được mã hóa bằng máy.Optical character recognition or optical character reader (OCR) is the electronic or mechanical conversion of images of typed, handwritten or printed text into machine-encoded text.

Tesseract có thể đọc chữ viết tay không?

Động cơ OCR Tesseract đã được sử dụng cho cả nhận dạng ký tự viết tay và in.Rakshit và Basu [9, 10] và Rakshit et al.. Rakshit and Basu [9, 10] and Rakshit et al.