- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这样:
img = cv2.imread(path_to_image)
print(pytesseract.image_to_string(img))
我得到的是:
73-82
Primo: 50 —
我也尝试指定意大利语,但结果非常相似:
73-82 _
Primo: 50
在 stackoverflow 上搜索其他问题后,我发现使用白名单可以改善十进制数字的读取,在本例中为 tessedit_char_whitelist='0123456789.'
,但我还想阅读图像中的单词。关于如何改进十进制数字的阅读有什么想法吗?
最佳答案
我建议将每一行文本作为单独的图像传递 tesseract。
出于某种原因,它似乎可以解决小数点问题......
cv2.threshold
将图像从灰度转换为黑白。cv2.dilate
具有非常长的水平核的形态学操作(在水平方向上合并 block )。pytesseract
。代码如下:
import numpy as np
import cv2
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' # I am using Windows
path_to_image = 'image.png'
img = cv2.imread(path_to_image, cv2.IMREAD_GRAYSCALE) # Read input image as Grayscale
# Convert to binary using automatic threshold (use cv2.THRESH_OTSU)
ret, thresh = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
# Dilate thresh for uniting text areas into blocks of rows.
dilated_thresh = cv2.dilate(thresh, np.ones((3,100)))
# Find contours on dilated_thresh
cnts = cv2.findContours(dilated_thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)[-2] # Use index [-2] to be compatible to OpenCV 3 and 4
# Build a list of bounding boxes
bounding_boxes = [cv2.boundingRect(c) for c in cnts]
# Sort bounding boxes from "top to bottom"
bounding_boxes = sorted(bounding_boxes, key=lambda b: b[1])
# Iterate bounding boxes
for b in bounding_boxes:
x, y, w, h = b
if (h > 10) and (w > 10):
# Crop a slice, and inverse black and white (tesseract prefers black text).
slice = 255 - thresh[max(y-10, 0):min(y+h+10, thresh.shape[0]), max(x-10, 0):min(x+w+10, thresh.shape[1])]
text = pytesseract.image_to_string(slice, config="-c tessedit"
"_char_whitelist=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-:."
" --psm 3"
" ")
print(text)
我知道这不是最通用的解决方案,但它设法解决了您发布的示例。
请将答案视为概念性解决方案 - 找到稳健的解决方案可能非常具有挑战性。
结果:
输出文本:
7.3-8.2
Primo:50
关于python - Pytesseract 不识别小数点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66505390/
尝试将简单的测试图像打印到文本时出现以下错误。 我已经验证我具有Pillow(PIL 1.1.7),并尝试卸载并重新安装pytesseract。文件路径是正确的,因为如果更改它们,则会收到另一个错误消
我正在尝试阅读此图像中还包含小数点和小数的文本 这样: img = cv2.imread(path_to_image) print(pytesseract.image_to_string(img))
我想识别这样的图像: 我正在使用以下配置: config="--psm 6 --oem 3 -c tessedit_char_whitelist=0123456789ABCDEFGHIJKLMNOPQ
我正在尝试通过 opencv 和 pytesseract 运行一个简单的车牌图像来获取文本,但我无法从中获取任何内容。按照这里的教程: https://circuitdigest.com/microc
我有使用 pytesseract 的代码并且工作完美,只有当我尝试识别的图像是 0 到 9 时才不起作用。如果图像只有一位数字,则不会给出任何结果。 这是我正在工作的图像样本 https://driv
我有这张 table 的图片 我正在尝试使用 PyTesseract 解析它。我已经非常接近使用此代码: from PIL import Image, ImageOps import pytesser
我有这个图像是从另一个图像裁剪而来的,我想将此图像作为image_to_string方法的输入: import pytesseract import cv2 num_plate = cv2.imrea
我正在尝试从图像中提取文本,但是pytesseract提供了完全不同的输出,输出下方附加的图像是“Werle”(完整的单词和字符),我尝试了许多不同的处理方法,例如图像增强,rgb2gray,rgb2
这是噪声图像扫描的经典PyTesseract问题。但是,在这种情况下,点矩阵打印机正在文本中打印一些水平的白线。随附一些样本。我不确定哪种预处理将改善文本的扫描。 使用以下命令,以下示例将输出以下内容
我在使用 Pytesser 使用此代码进行测试时遇到了一些问题: from PIL import Image import pytesseract img = Image.open('pic.png'
尝试在 python 上运行 tesseract,这是我的代码: import cv2 import os import numpy as np import matplotlib.pyplot as
我的代码: pytesseract.pytesseract.tesseract_cmd = 'C:/Programs/tesseract' print(pytesseract.image_to_str
我将 MSS 与 pytesseract 结合使用,尝试在屏幕上阅读以确定来自被监视区域的字符串。我的代码如下: import Image import pytesseract import cv2
以下代码在我 friend 的 windows 笔记本电脑上运行完美,但在我的笔记本电脑上,它吐出完全垃圾。我认为这可能与图书馆有关,但我不能肯定地说?你们能告诉我它是否适合您,或者您以前是否遇到过这
我在 Python 中使用以下代码从图像中提取文本, import cv2 import numpy as np import pytesseract from PIL import Image #
我是 pyhton 的新手,我正在使用 haar 级联制作车牌识别系统。我的代码可以很好地检测车牌并制作轮廓,但 pytesseract ocr 无法识别字符并给出奇怪的结果。请帮忙。 The det
我目前遇到 pytesseract 的问题,软件无法在此图像中检测到数字: /image/kmH2R.png 这是从应用了阈值过滤器的更大图像中获取的。 出于某种原因,pytesseract 不想识别
Pytesseract 无法识别数字 6 和 8。它识别 6 作为5 和 5 作为 5, 3 作为 8 和 8 作为 8, Oct 为 0c: 或 0:: 和 Wed 作为 Men。 使用的脚本: c
我有非常高分辨率的工程图/电路图,其中包含许多不同区域的文本。目的是从此类图像中提取文本。 我正在使用 pytesseract 来完成此任务。直接应用 pytesseract 是不可能的,因为在这种情
我目前面临 pytesseract 的问题,该软件无法检测到此图像中的数字: 出于某种原因,pytesseract 不想识别该图像中的数字。有什么建议么?这是我的代码: import pytesser
我是一名优秀的程序员,十分优秀!