Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyTesseract不识别小数_Python_Ocr_Tesseract_Python Tesseract - Fatal编程技术网

Python PyTesseract不识别小数

Python PyTesseract不识别小数,python,ocr,tesseract,python-tesseract,Python,Ocr,Tesseract,Python Tesseract,这并不是真正的复制,因为这些答案并没有解决我的问题,我的用例也不同 我正在使用PyTesseract识别表格单元格中的文本。当涉及到用小数点识别药物剂量时,OCR无法识别,尽管它对其他方面都是准确的。我在Windows10上使用的是TesseractV5.0.0-alpha.20200328 我的预处理包括使用立方体放大400%,转换为黑白,膨胀和侵蚀,形态和模糊。我尝试了所有这些(以及它们各自)的合理组合,但没有任何东西能够识别出 我尝试了各种值的--psm,以及字符白名单。我相信字体是Ser

这并不是真正的复制,因为这些答案并没有解决我的问题,我的用例也不同

我正在使用PyTesseract识别表格单元格中的文本。当涉及到用小数点识别药物剂量时,OCR无法识别
,尽管它对其他方面都是准确的。我在Windows10上使用的是
TesseractV5.0.0-alpha.20200328

我的预处理包括使用立方体放大400%,转换为黑白,膨胀和侵蚀,形态和模糊。我尝试了所有这些(以及它们各自)的合理组合,但没有任何东西能够识别出

我尝试了各种值的
--psm
,以及字符白名单。我相信字体是
Sergoe UI

处理前:

处理后:

PyteSeract输出:
25mg»p

处理代码:

import cv2, pytesseract
import numpy as np

image = cv2.imread( '01.png' )
upscaled_image = cv2.resize(image, None, fx = 4, fy = 4, interpolation = cv2.INTER_CUBIC)
bw_image = cv2.cvtColor(upscaled_image, cv2.COLOR_BGR2GRAY)

kernel = np.ones((2, 2), np.uint8)
dilated_image = cv2.dilate(bw_image, kernel, iterations=1)
eroded_image = cv2.erode(dilated_image, kernel, iterations=1)

thresh = cv2.threshold(eroded_image, 205, 255, cv2.THRESH_BINARY)[1]
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
morh_image = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)
            
blur_image = cv2.threshold(cv2.bilateralFilter(morh_image, 5, 75, 75), 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]

final_image = blur_image
text = pytesseract.image_to_string(final_image, lang='eng', config='--psm 10')

如果您还没有确定这一点,请查看此链接

拜访

对于许多问题,一个主要的解决方案是文本高度,我曾面临许多问题,但无法找出原因,但向tesseract发送具有正确大小字母的图像似乎解决了许多问题。 不要放大到随机的百分比,试试你的图像中字母接近30-40px的数字


另外,如果你的预处理过程将“.”变成了类似于字符的噪声,那么它也会被忽略。

我也遇到过类似的情况,并且能够通过使用图像处理方法和图像放大来增加正确小数的数量。然而,一小部分小数没有被正确识别

我找到的解决方案是更改pytesseract的语言设置:

我使用的是非英语设置,但将配置更改为
lang='eng'
修复了所有剩余的问题


不过,这可能对原来的问题没有帮助,因为设置已经是EasyOCR的工作方式,但速度非常慢