提高Tesseract文字识别率的三种方法

前言

有各种原因会导致Tesseract文字识别率不高。这里介绍了一些基本操作,能够帮助你显著提高识别精度。

但是如果你要识别的图像是一个并不常用的字体,或者是一个新的语言,那么就必须要训练才行。

提高Tesseract文字识别率的方法

方法一 图像预处理

Tesseract在执行OCR之前已经在内部先进行了各种图像处理操作(使用Leptonica库)。通常情况下,这样操作就已经足够了,但是OCR的识别场景复杂,不可避免的会碰到识别准确度不够的情况。

那么你可以试试以下这些办法:

缩放 Rescaling

Tesseract最适合DPI至少为300DPI的图像,因此调整图像的大小可能是有帮助的。

二值化Binarisation

具体可以参考图像处理工具ImageMagick - 灰度化和二值化

去噪 Noise Removal

噪声是图像中亮度或颜色的随机变化,会使图像的文本更难以识别。在二值化步骤中,Tesseract无法去除某些类型的噪声,这会导致准确率下降。

可以参考ImageMagick给图像去噪来给图像进行去噪处理。

偏移校正 Rotation / Deskewing

如果页面过于倾斜,Tesseract的行分割质量会显著降低,严重影响OCR的质量。为了解决这个问题,旋转页面图像使文本行是水平的。

边框处理 Borders

扫描的页面通常有黑色的边框,这些字符可能作为额外的字符被错误地提取出来。这些可以通过程序或者软件来做,非常简单

经过软件处理后:

如果您的OCR只是文本区域没有任何边框,tesseract可能会有问题。你可以通过如下命令,来增加10x10像素的白色边框:

convert  427-1.jpg  -bordercolor White -border 10x10 427-1b.jpg

透明与Alpha通道 Transparency / Alpha channel

阿尔法通道)是指一张图片的透明和半透明度。

举例来说一个使用每个像素16比特存储的位图,对于图形中的每一个像素而言,可能以5个比特表示红色,5个比特表示绿色,5个比特表示蓝色,最后一个比特是阿尔法。在这种情况下,它要么表示透明要么不是,因为阿尔法比特只有0或1两种不同表示的可能性。

当使用32个比特存储的位图,每8个比特表示红绿蓝,和阿尔法通道。在这种情况下,就不光可以表示透明还是不透明,阿尔法通道还可以表示256级的半透明度,因为阿尔法通道有8个比特可以有256种不同的数据表示可能性。

Tesseract期望在处理图像之前从图像中删除alpha通道。这可以通过ImageMagick命令来实现

convert input.png -alpha off output.png

方法二 页面分割

默认情况下,Tesseract在分割图像时需要一页文本。如果你只是试图OCR一个小区域尝试不同的分割模式,使用-psm参数。

  0    Orientation and script detection (OSD) only.
  1    Automatic page segmentation with OSD.
  2    Automatic page segmentation, but no OSD, or OCR.
  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.

方法三 字典、单词列表和模式

默认情况下,Tesseract被优化为能够识别句子中的单词中。如果您试图识别其他东西,比如收据、价目表或代码,那么会有些困难。

如果您的大部分文本不是字典中的单词,那么禁用Tesseract使用的字典可以提高一定的识别能力。

当然Tesseract还可以将单词添加到帮助识别的单词列表中,或者添加常见的字符模式。

如果您知道您只会遇到某一些字符,比如只有数字,那么您可以使用tessedit char白名单配置变量。


相关主题:
相关推荐
  1. 武汉00后大二学妹拍视频月入七十万
  2. 魔毯
  3. 深圳市龙华新区观澜办事处福民社区观澜皓源幼儿园 - 深圳幼儿园黄页
  4. Python爬虫教程
  5. 西安市蓝田县童乐幼儿园 - 西安幼儿园黄页
  6. Python公开课 - 标准库queue基本使用
  7. 众泰造车的沉浮
  8. 小喜鹊说得对
  9. 士别三日当刮目相待
  10. 百名网媒总编辑登上知音号欣赏武汉夜色
  11. 警方通报:武汉男子持刀至五死一伤,嫌犯已跳桥
  12. 杯子和水的倾诉
  13. 武汉推出越王勾践剑交通卡
  14. 面试宝典
  15. 小龙鱼双语幼儿园 - 哈尔滨幼儿园黄页
  16. 童星双语幼儿园 - 石家庄幼儿园黄页
  17. 国人暴动
  18. 事发武汉农夫山泉矿泉水内惊现大量虫卵
  19. 武汉一女子七天被骗220万
  20. Django的Cache框架(下)
  21. 小太阳幼儿园(新康路) - 成都市幼儿园黄页
  22. 郑人买鞋
  23. Python+Selenium基本操作获取当前页面URL
  24. Nginx Location 匹配设置
  25. 树木医生
  26. 央媒聚焦!国庆假期173.78万人次打卡大美黄陂
  27. 北京市怀柔区第三幼儿园 - 北京幼儿园黄页
  28. 黄昏海的故事
  29. 吉林市龙潭区小才子双语幼儿园 - 吉林市幼儿园黄页
  30. 燕子与小鸟
  31. Python公开课 - 爬虫识别滑动验证码
  32. Amazon Rekognition 新技术与个人隐私的冲突
  33. 脱单!武汉的相亲角在哪你知道吗?
  34. 杜鹃花
  35. 呼和浩特市新城区苗苗幼儿园(兴安北路) - 呼和浩特幼儿园黄页
  36. XPath常用函数整理总结
  37. 易中天给英雄武汉的一首诗 - 武汉新鲜事
  38. 田田幼儿园 - 成都市幼儿园黄页
  39. 南京市高淳区武家嘴实验学校附属幼儿园 - 南京幼儿园黄页
  40. 奥迪客户不满加价,被武汉4S店销售群殴