首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >提高tesseract OCR准确率的图像处理

提高tesseract OCR准确率的图像处理
EN

Stack Overflow用户
提问于 2012-02-28 18:12:06
回答 14查看 192.2K关注 0票数 169

我一直在使用tesseract将文档转换为文本。文档的质量参差不齐,我正在寻找关于哪种图像处理可以改善结果的提示。我注意到,高度像素化的文本--例如传真机生成的文本--对于tesseract来说尤其难以处理--大概所有这些字符的锯齿状边缘都会让形状识别算法感到困惑。

什么样的图像处理技术可以提高精度?我一直使用高斯模糊来平滑像素化的图像,并看到了一些小的改进,但我希望有一个更具体的技术,可以产生更好的结果。比方说,一个调整为黑白图像的过滤器,它将平滑不规则的边缘,然后是一个过滤器,它将增加对比度,使字符更加清晰。

对于图像处理方面的新手,有什么一般的建议吗?

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2012-04-06 02:46:38

  1. 修复DPI (如果需要) 300 DPI是
  2. 修复文本大小的最小值(例如,12磅就可以了)
  3. 尝试修复文本行(纠偏和扭曲文本)
  4. 尝试修复图像的照明(例如,无DPI和去噪图像

<代码>G211

没有适用于所有情况的通用命令行(有时您需要模糊和锐化图像)。但是你可以尝试一下TEXTCLEANER from Fred's ImageMagick Scripts

如果你不喜欢命令行,也许你可以尝试使用开源scantailor.sourceforge.net或商业bookrestorer

票数 127
EN

Stack Overflow用户

发布于 2012-07-25 02:45:55

我绝对不是一个光学字符识别专家。但是这周我需要把文本转换成jpg格式。

我从一个彩色的RGB 445x747像素的jpg开始。我立即尝试了tesseract,程序几乎什么都没有转换。然后,我进入GIMP并执行以下操作。image>mode>grayscale image>scale image>1191x2000像素filters>enhance>unsharp掩码的值为半径= 6.8,数量= 2.69,阈值=0,然后我以100%的质量保存为新的jpg。

然后,Tesseract能够将所有文本提取到一个.txt文件中

基普是你的朋友。

票数 81
EN

Stack Overflow用户

发布于 2018-06-08 22:15:06

根据经验,我通常使用OpenCV库应用以下图像预处理技术:

  1. 重新缩放图像(如果您处理的图像的DPI小于300dpi,则建议使用此方法):

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

  • Converting image to灰度:

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

  • Applying膨胀和侵蚀以消除噪声(您可以根据您的数据集调整内核大小):

iterations=1)

  • Applying = np.ones((1,1),np.uint8) img =cv2.ilate( img,kernel,iterations=1) img= cv2.erode(img,kernel,kernel模糊,这可以通过使用以下行之一来完成(每行都有其优缺点,但是,中值模糊和双边滤波器通常比高斯模糊执行得更好):

cv2.threshold(cv2.GaussianBlur(img,(5,5),0),0,255,cv2.THRESH_BINARY +cv2.THRESH_OTSU)1cv2.Threshold(cv2.双边过滤器(img,5,75,75),0,255,cv2.THRESH_BINARY +cv2.THRESH_OTSU)1cv2.Threshold(cv2.medianBlur(img,3),0,255,cv2.THRESH_BINARY +cv2.THRESH_OTSU)1cv2.adaptiveThreshold(cv2.GaussianBlur(img,(5,5),0),255,cv2.adaptiveThreshold(cv2.bilateralFilter(img,,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,31,2) cv2.THRESH_BINARY 9,75,75),255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,31,2) cv2.adaptiveThreshold(cv2.medianBlur(img,3),255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,31,2)

我最近写了一个关于Tesseract的非常简单的指南,但它应该能让你写出你的第一个OCR脚本,并清除我在文档中遇到的一些障碍。

如果你想查看它们,这里我与你分享链接:

票数 44
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9480013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档