这是原始屏幕截图,我将图像裁剪成4个部分并清除图像的背景到我可能做的范围,但tesseract只检测到最后一列而忽略了其余部分。
显示tesseract的输出,因为在处理结果时我删除了空格
Femme—Fatale.
DaRkLoRdEIa
aChineseN1gg4
Noob_Diablo_
显示tesseract的输出,因为在处理结果时我删除了空格
Kicked.
NosNoel
ChikiZD
Death_Eag|e_42
Chai—.
3579 10 1 7 148
2962 3 O 7 101
2214 2 2 7 99
2205 1 3 6 78
8212
7198
6307
5640
4884
15
40
40
6O
80
80
只是转储
的输出result = `pytesseract.image_to_string(Image.open("D:/newapproach/B&W"+str(i)+".jpg"),lang="New_Language")`
但我不知道如何从这里开始获得一致的结果。无论如何我都可以强制tesseract识别文本区域并使其扫描。因为在培训师(SunnyPage)中,tesseract默认识别扫描它无法识别某些区域,但一旦我手动选择,一切都被检测到并正确翻译成文本
答案 0 :(得分:3)
尝试使用命令行,它可以选择决定使用哪个 psm 值。
你可以试试这个:
pytesseract.image_to_string(image, config='-psm 6')
尝试使用您提供的图像,结果如下:
我面临的唯一问题是我的tesseract词典将你图像中提供的“1”解释为“我”。
以下是可用的psm选项列表:
pagesegmode值是: 0 =仅限方向和脚本检测(OSD)。
1 =使用OSD自动分页。
2 =自动分页,但没有OSD或OCR
3 =全自动页面分割,但没有OSD。 (默认)
4 =假设一列可变大小的文本。
5 =假设一个垂直对齐文本的统一块。
6 =假设一个统一的文本块。
7 =将图像视为单个文本行。
8 =将图像视为一个单词。
9 =将图像视为圆圈中的单个单词。
10 =将图像视为单个字符。
答案 1 :(得分:1)
我使用了此链接
https://www.howtoforge.com/tutorial/tesseract-ocr-installation-and-usage-on-ubuntu-16-04/
只需使用以下命令即可将准确率提高多达50%`
sudo apt update
sudo apt install tesseract-ocr
sudo apt-get install tesseract-ocr-eng
sudo apt-get install tesseract-ocr-all
sudo apt install imagemagick
convert -h
tesseract [image_path] [file_name]
convert -resize 150% [input_file_path] [output_file_path]
convert [input_file_path] -type Grayscale [output_file_path]
tesseract [image_path] [file_name]
它只会显示粗体字母
谢谢
答案 2 :(得分:0)
fn = 'image.png'
img = cv2.imread(fn, 0)
img = cv2.bilateralFilter(img, 20, 25, 25)
ret, th = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)
# Image.fromarray(th)
print(pytesseract.image_to_string(th, lang='eng'))
答案 3 :(得分:-1)
我的建议是在整个图像上执行OCR。
我已预处理图像以获得灰度图像。
import cv2
image_obj = cv2.imread('1D4bB.jpg')
gray = cv2.cvtColor(image_obj, cv2.COLOR_BGR2GRAY)
cv2.imwrite("gray.png", gray)
我在终端上运行了图像上的tesseract,在这种情况下,准确度似乎也超过了90%。
tesseract gray.png out
3579 10 1 7 148
3142 9 o 5 10
2962 3 o 7 101
2214 2 2 7 99
2205 1 3 6 78
Score Kills Assists Deaths Connection
8212 15 1 4 4o
7198 7 3 6 40
6307 6 1 5 60
5640 2 3 6 80
4884 1 1 5 so
以下是一些建议 -
答案 4 :(得分:-1)
我认为您必须先预处理图像,对我有用的更改是: 假设
import PIL
img= PIL.Image.open("yourimg.png")
使图像变大,我通常会将图像尺寸加倍。
img.resize(img.size [0] * 2,img.size [1] * 2)
灰度图像
img.convert(' LA&#39)
让字符变得更大胆,你可以在这里看到一种方法:https://blog.c22.cc/2010/10/12/python-ocr-or-how-to-break-captchas/ 但是这种方法相当慢,如果你使用它,我建议使用另一种方法
选择,反转选择,使用gimpfu填充黑色,白色
image = pdb.gimp_file_load(文件,文件) layer = pdb.gimp_image_get_active_layer(图片) REPLACE = 2 pdb.gimp_by_color_select(层"#000000" 20,REPLACE 0,0,0,0) pdb.gimp_context_set_foreground((0,0,0)) pdb.gimp_edit_fill(层1,0) pdb.gimp_context_set_foreground((255,255,255)) pdb.gimp_edit_fill(层0)
pdb.gimp_selection_invert(图像) pdb.gimp_context_set_foreground((0,0,0))