繁体   English   中英

如何处理和提取图像中的文本

[英]How to process and extract text from image

我正在尝试使用 python cv2 从图像中提取文本。 结果很可悲,我想不出改进代码的方法。 我相信在提取文本之前需要处理图像,但不确定如何处理。

示例图像

我试图将它转换成黑白,但没有运气。

import cv2
import os
import pytesseract
from PIL import Image
import time

pytesseract.pytesseract.tesseract_cmd='C:\\Program Files\\Tesseract-OCR\\tesseract.exe'

cam = cv2.VideoCapture(1,cv2.CAP_DSHOW)

cam.set(cv2.CAP_PROP_FRAME_WIDTH, 8000)
cam.set(cv2.CAP_PROP_FRAME_HEIGHT, 6000)

while True:
    return_value,image = cam.read()
    image=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
    image = image[127:219, 508:722]
    #(thresh, image) = cv2.threshold(image, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
    cv2.imwrite('test.jpg',image)
    print('Text detected: {}'.format(pytesseract.image_to_string(Image.open('test.jpg'))))
    time.sleep(2)

cam.release()
#os.system('del test.jpg')

在执行文本提取之前进行预处理以清洁图像可能会有所帮助。 这是一个简单的方法

  • 将图像转换为灰度并锐化图像
  • 自适应阈值
  • 执行形态学操作以清洁图像
  • 反转图像

首先我们转换为灰度,然后使用锐化内核对图像进行锐化

在此处输入图片说明

接下来我们自适应阈值以获得二进制图像

在此处输入图片说明

现在我们执行形态转换以平滑图像

在此处输入图片说明

最后我们反转图像

在此处输入图片说明

import cv2
import numpy as np

image = cv2.imread('1.jpg')
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]

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
close = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel, iterations=1)
result = 255 - close

cv2.imshow('sharpen', sharpen)
cv2.imshow('thresh', thresh)
cv2.imshow('close', close)
cv2.imshow('result', result)
cv2.waitKey()

尝试这个

    from PIL import image
    import PIL.image
    from pytesseract import image_to_string
     import pytesseract

     pytesseract.pytesseract.tesseract_cmd = '_________' 
          #tesseract executable path -- if not added to 
            environment path, if added ignore

       Output = 
         pytesseract.image_to_string(PIL.image.open('image 
            wants to read'). convert ("RBG"), Lang='eng')
       Print (output)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM