gpt4 book ai didi

python - Pytesseract 提高 OCR 准确性

转载 作者:行者123 更新时间:2023-12-04 08:51:08 28 4
gpt4 key购买 nike

我想从 python 中的图像中提取文本.为了做到这一点,我选择了 pytesseract .当我尝试从图像中提取文本时,结果并不令人满意。我也经历过this并实现了列出的所有技术。然而,它的表现似乎并不好。
图片:
enter image description here
代码:

import pytesseract
import cv2
import numpy as np

img = cv2.imread('D:\\wordsimg.png')

img = cv2.resize(img, None, fx=1.2, fy=1.2, interpolation=cv2.INTER_CUBIC)

img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

kernel = np.ones((1,1), np.uint8)
img = cv2.dilate(img, kernel, iterations=1)
img = cv2.erode(img, kernel, iterations=1)

img = cv2.threshold(cv2.medianBlur(img, 3), 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]

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

txt = pytesseract.image_to_string(img ,lang = 'eng')

txt = txt[:-1]

txt = txt.replace('\n',' ')

print(txt)
输出:
t hose he large form might light another us should took mountai house n story important went own own thought girl over family look some much ask the under why miss point make mile grow do own school was 
即使是 1 个不需要的空间也会花费我很多钱。我希望结果是 100% 准确的。任何帮助,将不胜感激。谢谢!

最佳答案

我将调整大小从 1.2 更改为 2 并删除了所有预处理。我用 psm 11 和 psm 12 得到了很好的结果

import pytesseract
import cv2
import numpy as np

img = cv2.imread('wavy.png')

# img = cv2.resize(img, None, fx=1.2, fy=1.2, interpolation=cv2.INTER_CUBIC)
img = cv2.resize(img, None, fx=2, fy=2)

img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

kernel = np.ones((1,1), np.uint8)
# img = cv2.dilate(img, kernel, iterations=1)
# img = cv2.erode(img, kernel, iterations=1)

# img = cv2.threshold(cv2.medianBlur(img, 3), 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]

cv2.imwrite('thresh.png', img)

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

for psm in range(6,13+1):
config = '--oem 3 --psm %d' % psm
txt = pytesseract.image_to_string(img, config = config, lang='eng')
print('psm ', psm, ':',txt)
config = '--oem 3 --psm %d' % psm线路使用 string interpolation (%) operator替换 %d带整数 (psm)。我不确定是什么 oem确实如此,但我已经养成了使用它的习惯。更多关于 psm在这个答案的最后。
psm  11 : those he large form might light another us should name

took mountain story important went own own thought girl

over family look some much ask the under why miss point

make mile grow do own school was

psm 12 : those he large form might light another us should name

took mountain story important went own own thought girl

over family look some much ask the under why miss point

make mile grow do own school was
psm是页面分割模式的缩写。我不确定不同的模式是什么。您可以从描述中了解代码的含义。您可以从 tesseract --help-psm 获取列表
Page segmentation modes:
0 Orientation and script detection (OSD) only.
1 Automatic page segmentation with OSD.
2 Automatic page segmentation, but no OSD, or OCR. (not implemented)
3 Fully automatic page segmentation, but no OSD. (Default)
4 Assume a single column of text of variable sizes.
5 Assume a single uniform block of vertically aligned text.
6 Assume a single uniform block of text.
7 Treat the image as a single text line.
8 Treat the image as a single word.
9 Treat the image as a single word in a circle.
10 Treat the image as a single character.
11 Sparse text. Find as much text as possible in no particular order.
12 Sparse text with OSD.
13 Raw line. Treat the image as a single text line,
bypassing hacks that are Tesseract-specific.

关于python - Pytesseract 提高 OCR 准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64099248/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com