首页 文章

tesseract的OCR结果非常不一致

提问于
浏览
7

enter image description here

这是原始屏幕截图,我将图像裁剪成4个部分,并将图像的背景清除到我可以做的范围,但tesseract只检测到最后一列而忽略了其余部分 .

enter image description here

显示tesseract的输出,因为在处理结果时我删除了空格

Femme—Fatale.



  DaRkLoRdEIa
  aChineseN1gg4

  Noob_Diablo_

enter image description here

显示tesseract的输出,因为在处理结果时我删除了空格

Kicked.

NosNoel
ChikiZD
Death_Eag|e_42

Chai—.

enter image description here

3579 10 1 7 148

2962 3 O 7 101

2214 2 2 7 99

2205 1 3 6 78

enter image description here

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在默认识别扫描它无法识别某些区域,但一旦我选择了手动,一切都被检测到并正确翻译成文本

代码

4 回答

  • -1

    尝试使用命令行,它可以选择决定使用哪个 psm 值 .

    你可以尝试这个:

    pytesseract.image_to_string(image, config='-psm 6')
    

    尝试使用您和以下提供的图像是结果:

    Extracted Text Out of Image

    我面临的唯一问题是我的tesseract词典将你图像中提供的“1”解释为“我” .

    以下是可用的psm选项列表:

    pagesegmode值为:0 =仅限方向和脚本检测(OSD) .

    1 =使用OSD自动分页 .

    2 =自动页面分割,但没有OSD或OCR

    3 =全自动页面分割,但没有OSD . (默认)

    4 =假设一列可变大小的文本 .

    5 =假设一个垂直对齐文本的统一块 .

    6 =假设一个统一的文本块 .

    7 =将图像视为单个文本行 .

    8 =将图像视为单个单词 .

    9 =将图像视为圆形中的单个单词 .

    10 =将图像视为单个字符 .

  • 0

    我用过这个链接

    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]
    

    它只会显示粗体字母

    谢谢

  • -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
    

    以下是一些建议 -

    • 不要直接使用image_to_string方法,因为它将图像转换为bmp并以72 dpi保存 .

    • 如果要使用image_to_string,则覆盖它以300 dpi保存图像 .

    • 您可以使用run_tesseract方法然后读取输出文件 .

    我运行OCR的图像 .
    enter image description here

    解决此问题的另一种方法是将数字和深度裁剪到神经网络进行预测 .

  • 1

    我认为你必须先对图像进行预处理,对我有用的变化是:假设

    import PIL
    img= PIL.Image.open("yourimg.png")
    
    • 使图像变大,我通常将图像尺寸加倍 .

    img.resize(img.size [0] * 2,img.size [1] * 2)

    • 灰度图像

    img.convert( 'LA')

    image = pdb.gimp_file_load(file,file)layer = pdb.gimp_image_get_active_layer(image)REPLACE = 2 pdb.gimp_by_color_select(layer,“#000000”,20,REPLACE,0,0,0,0)pdb.gimp_context_set_foreground((0 ,0,0))pdb.gimp_edit_fill(layer,0)pdb.gimp_context_set_foreground((255,255,255))pdb.gimp_edit_fill(layer,0)

    pdb.gimp_selection_invert(image)pdb.gimp_context_set_foreground((0,0,0))

相关问题