Python 实现 OCR 识别

时间:2019-07-27 来源:www.z4pv3d2e0lczj.com

  git 地址

  一、安装

  macOS 上安装依赖。

  brew install tesseract

  二、下载训练数据

  训练数据的git地址

  找到 chi_sim.traineddata 这个文件,下载到本地。

  注:用迅雷有加速会比原站快很多。

  三、Python 代码

  因为代码识别出来的每个中文之间都有空格,所以用‘’把空格全部替换。但是之后发现,这个处理流程不适合英文识别。

  创建了tessdata目录,存储chi_sim.traineddata文件。

  from PIL import Image

  import pytesseract

  import sys

  class Languages:

  ? ? CHS='chi_sim'

  ? ? CHT='chi_tra'

  ? ? ENG='eng'

  def img_to_str(image_path, lang=Languages.ENG):

  ? ? tessdata_dir_config=r'--tessdata-dir '''''

  ? ? return pytesseract.image_to_string(Image.open(image_path), lang, config=tessdata_dir_config)

  def main():

  ? ? if ( 2 > len(sys.argv)) :

  ? ? ? ? print("input png file")

  ? ? ? ? return -1

  ? ? ocr_str=img_to_str(sys.argv[1], lang=Languages.CHS)

  ? ? ocr_str_new=ocr_str.replace(' ', '')

  ? ? f=open(sys.argv[1]+".txt", "w+")

  ? ? f.write(ocr_str_new)

  ? ? f.close()

  if __name__=='__main__':

  ? ? main()

  

  网上截取的文字样本1

  这个样本错误比较少。文字中的标点符号有全角和半角不一致的问题。

  现年64岁的德国总理默克尔以能干著称。

  自2005年上任以来,她已在总理的岗位上连续工作了14年。在国际金融危机、欧债危机、难民危机等一系列变故中,默克尔带领德国乃至欧洲一路向前,虽有波折,但方寸不乱。

  

  网上截取的文字样本2

  OCR识别这段文字出错就比较多。

  据悉,GalaxyNote10将采用打孔屏幕,后置三摄,下方有激光自动对焦传感器和LED闪光灯;机身尺寸为77.6亮米(宽)x162.5毫米(长)x170.1埕米。

  另外,三星将于美国东部时间8月7日下午4点(北京时间8月8日凌晨4点)在纽约布鲁克林的巴克莱中心正式发布GalaxyNote10手机,让我们拭目以待。

  四、总结

  因为部分网站不支持网页另存为文本,所以用?OCR 识别可以代替打字录入。这个 OCR 识别库在使用上非常简单,识别率也在可接受范围之内。

达到当天最大量