使用Python tesseract从2D图像中提取图像中的数字

时间:2018-05-28 10:25:51

标签: python opencv tensorflow tesseract

在提取期间,包含2D矩阵形式的图像中的整数Tesseract无法给出正确的结果,并且每次执行代码时结果都会有所不同,任何人都可以在下面的代码中找出遗漏的内容

UPDATE

输入

enter image description here

阈值:adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,251,95

阈值输出:
enter image description here

输出的形式为1 5 5 7 5 7 3 8 6 4 9 0 2 4 8 6 1 3 0 2 3 9 0 8 9可以是行主要形式,而列主要形式不是'但问题是我们确实需要将给定的输出保存到变量

1 个答案:

答案 0 :(得分:0)

尝试将阈值从251,95更改为251,40。

img = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C , cv2.THRESH_BINARY ,251,40)

您似乎已经拥有完美的图像,无需任何更改即可从图像中提取字符串。 Pytesseract的image_to_string在我的系统上不起作用,所以我使用了一个字逐个字的OCR。这绝对不是世界上最好的解决方案嘿,如果它有效,它的工作原理。我附上了几个文件(请参阅下面的谷歌驱动器链接)

<强>步骤:

  1. 运行slice_img.py:这会将您的图像分成5x5个。
  2. 运行TrainAndTest.py:这将从每个切片中提取数字 我们创建的图像并将其保存到data.txt文件中。
  3. 请注意:

    1. Training_chars.png,classifications.txt和flattened_images.txt 是OCR工作所必需的文件。
    2. 您必须为上面安装了numpy,PIL,OpenCV库 脚本工作
    3. 请将所有文件保存在同一文件夹中,并使用图像名称 test.png
    4. TrainAndTest.py - https://drive.google.com/file/d/0B05aeuFExe2Aa3p3SWszN2xqU2c/view?usp=sharing
      slice_image.py - https://drive.google.com/file/d/0B05aeuFExe2AN0t3UUlGZ3VjcW8/view?usp=sharing
      training_chars.png - https://drive.google.com/file/d/0B05aeuFExe2ANjJNbzV5VTJyRTA/view?usp=sharing
      classifications.txt - https://drive.google.com/file/d/0B05aeuFExe2AZU91bUpOblB3d2c/view?usp=sharing
      flattened_images.txt - https://drive.google.com/file/d/0B05aeuFExe2AeXVnbXVXVTZ2RTQ/view?usp=sharing