添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

我已经尝试了几个选项,但我似乎不能正确地读出它们是15/0、30/0、40/0。

    frame = frame[900:1000, 450:500]
    scale_percent = 200  # percent of original size
    width = int(frame.shape[1] * scale_percent / 100)
    height = int(frame.shape[0] * scale_percent / 100)
    dim = (width, height)
    frame = cv2.resize(frame, dim, interpolation=cv2.INTER_AREA)
    cv2.imshow("cropped", frame)
    cv2.waitKey(0)
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
    cv2.imshow("cropped", frame)
    cv2.waitKey(0)
    pytesseract.pytesseract.tesseract_cmd = (
        r"C:\Program Files\Tesseract-OCR\tesseract.exe"
    results = pytesseract.image_to_data(
        frame,
        output_type=Output.DICT,
        config="--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789",
    # results = replace_chars(results)
    print(("-").join(results["text"]), "\n")
    
5 个评论
它已经做到了最好。 请注意,按比例放大并不能提高精确度 -- 你所做的只是让边缘变得模糊不清。
我怀疑我是否使用了最好的方法,因为它没有识别任何东西。如果正确使用 "0 "的话,它至少不会错过 "0",对吗?
替换代码0】说要把图像作为一个单一的字符。 这肯定不是你想要的。 你可能想要1或2个。
谢谢,我已经试过1,它没有检测到什么。2给出了一个错误。
psm 6 works for me.
python
ocr
python-tesseract
user3497492
user3497492
发布于 2022-02-01
1 个回答
Ahx
Ahx
发布于 2022-02-01
已采纳
0 人赞同

一种解决的方法是使用范围内阈值处理

The result will be:

for image in image_list: bgr_image = cv2.imread(image) hsv_image = cv2.cvtColor(bgr_image, cv2.COLOR_BGR2HSV) mask = cv2.inRange(hsv_image, array([0, 0, 0]), array([165, 10, 255])) kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 3)) dilate = cv2.dilate(mask, kernel, iterations=1) thresh = cv2.bitwise_and(dilate, mask) text = pytesseract.image_to_string(thresh, config='--psm 6') print(text)

第二种方式是应用全局阈值

for image in image_list: bgr_image = cv2.imread(image) gray_image = cv2.cvtColor(bgr_image, cv2.COLOR_BGR2GRAY) thresh = cv2.threshold(gray_image, 127, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1] text = pytesseract.image_to_string(thresh, config='--psm 6') print(text)