通过删除特殊字符改进 Tesseract OCR 结果
Posted
技术标签:
【中文标题】通过删除特殊字符改进 Tesseract OCR 结果【英文标题】:Improve Tesseract OCR results by removing special characters 【发布时间】:2017-09-22 00:55:22 【问题描述】:我正在对保存在我的数据库中的一些pdf
、image
、tiff
文件进行tesseract
转换。但是在这样做的同时,我从各种文件中得到了很多垃圾文本输出。例如,在这种情况下,图像给了我以下文本输出。
“‘55“ .'Hï¬ï¬jï¬tï¬tf‘N‘Dfli’iisifagï¬'aï¬ffl‘rfé-wt-“ï¬â€˜-:-'!W',fl':ï¬fm:afJuirzv-int'g-v "3.0:†_‘ l 1: v .w
From:Beaver Medical Internal Med. 909 797 8922 06/28/2016 11:24 #946 RODS/006
如您所见,它在开头添加了一些额外的特殊字符。
只想知道是否有任何控制参数可以从输出中删除此类特殊字符,因为许多输入文件都会发生这种情况。
注意:这不是原始图像,这只是我正在转换为文本的pdf屏幕截图的一部分,并且输出是原始输出的一部分。
我的问题与 Limit characters tesseract is looking for 不相似,因为该问题是为了忽略字母以外的内容,但在我的情况下,输出文本中有一些不需要的字母、数字,我需要在使用 @987654330 后将其删除@我在输出文本的开头仍然收到错误的文本he fhawfyhftiwlwwfuisipgkggfawfarwtwofrrletitwtfilfmjafgurrwsnnve mania a i v a an
,它也删除了数字。所以只想问有没有什么办法可以去掉开头出现的这些不需要的字母、特殊字符、数字。
【问题讨论】:
Limit characters tesseract is looking for的可能重复 @sashoalm 这样做后我得到了这个,他 fhawfyhftiwlwwfuisipgkggfawfarwtwofrrletitwtfilfmjafgurrwsnn *** a i v a izromrseaver 医疗内部倾斜 sos min seaa oslaelaoie urea asses ptoosloos 数字消失了。我还想要数字可以做什么,还需要删除不需要的文本,例如他 fhawfyhftiwlwwfuisipgkggfawfarwtwofrrletitwtfilfmjafgurrwsnnve mania a i v a an from starting. 我也尝试在配置中添加这个tessedit_char_whitelist abcdefghijklmnopqrstuvwxyz0123456789@.
,但输出是 h5g11hwvwhfvt7713fybcfuisiwiggfiwfarwtrtnifrrleiixwtfhfmjafguiuwginnve mam.u a 5 1r v .w lzromrseaver medical internal tilled. 909 797 8922 0612812016 11124 91946 p.0051006
,所以仍然存在问题。你能帮忙吗?
@VibhorBhatnagar 此文本 - From:Beaver Medical Internal Med. 909 797 8922 06/28/2016 11:24 #946 RODS/006
- 来自上述问题的 tesseract
输出除了垃圾字符的引导线吗?如果是这样,看起来OCR
的准确性仍然需要提高,因为仍然识别出一些不正确的字符?
@thewaywewere 是的,此文本是tesseract
输出以及垃圾字符的引导行。在这种情况下可以做什么?
【参考方案1】:
在 tessdata/configs 目录中创建一个配置文件(例如“字母”) - 通常是 /usr/share/tesseract/tessdata/configs
或/usr/share/tesseract-ocr/tessdata/configs
并将这一行添加到配置文件中:
tessedit_char_whitelist abcdefghijklmnopqrstuvwxyz
...或者也许 [a-z] 有效.. 不知道 :-) 然后调用 tesseract 类似这样:
tesseract input.tif output nobatch letters
这将限制 tesseract 只识别想要的字符
【讨论】:
"tessedit_char_whitelist abcdefghijklmnopqrstuvwxyz" 将只包括字母,然后它会忽略数字?在这个“tesseract input.tif output nobatch letters”上,“nobatch”指的是什么? 在这样做之后,我得到了这个he fhawfyhftiwlwwfuisipgkggfawfarwtwofrrletitwtfilfmjafgurrwsnnve mania a i v a an izromrseaver medical internal tilted sos min seaa oslaelaoie urea arses ptoosloos
数字消失了。我还想要数字可以做什么,还需要从开始删除不需要的文本,如he fhawfyhftiwlwwfuisipgkggfawfarwtwofrrletitwtfilfmjafgurrwsnnve mania a i v a an
。
也不是我必须删除特殊字符,只是想删除输出文本中较早出现的不需要的特殊字符
我也尝试在配置中添加这个 tessedit_char_whitelist abcdefghijklmnopqrstuvwxyz0123456789@.
,但输出是 h5g11hwvwhfvt7713fybcfuisiwiggfiwfarwtrtnifrrleiixwtfhfmjafguiuwginnve mam.u a 5 1r v .w lzromrseaver medical internal tilled. 909 797 8922 0612812016 11124 91946 p.0051006
,所以仍然存在问题。你能帮忙吗?
你可以写一个python脚本来删除不需要的carachters,如果你不知道怎么做,我可以为你写@VibhorBhatnagar。以上是关于通过删除特殊字符改进 Tesseract OCR 结果的主要内容,如果未能解决你的问题,请参考以下文章