如何使用Tesseract训练基于Python的OCR,以训练不同的国民身份证? - python

我正在使用python制作一个OCR系统,该系统可从ID卡读取并提供图像的准确结果,但是由于tesseract读取的错误字符过多,因此无法提供正确的答案。我该如何训练tesseract,使其能够完美地读取ID卡并为我们提供正确和准确的详细信息,此外,我如何才能进入.tiff文件并使tesseract用于我的项目。

参考方案

改善Pytesseract识别的步骤:

1)清洁您的图像阵列,以便只有文本(生成字体,而不是手写字体)。字母的边缘应无扭曲。 应用阈值(尝试不同的值)。同时应用一些平滑过滤器。我还建议使用Morfholofical开/关-但这仅是一个奖励。这是应该以数组形式输入pytesseract识别的夸张示例:https://i.ytimg.com/vi/1ns8tGgdpLY/maxresdefault.jpg

2)使用您要识别的文字将图像调整为更高的分辨率

3)Pytesseract通常应该识别任何种类的字母,但是通过安装书写文字的字体,可以极大地提高准确性。

如何在pytesseract中安装新字体:

1)以TIFF格式获取所需字体

2)将其上传到http://trainyourtesseract.com/并将经过培训的数据接收到您的电子邮件中

3)将训练后的数据文件(* .traineddata)添加到此文件夹C:\ Program Files(x86)\ Tesseract-OCR \ tessdata

4)将以下字符串命令添加到pytesseract重构函数中:

  • 可以说您有2种训练有素的字体:font1.traineddata和font2.traineddata
  • 要同时使用两者,请使用此命令

    txt = pytesseract.image_to_string(img,lang = 'font1 + font2')

  • 以下是测试您对网络图像的识别的代码:

    import cv2
    import pytesseract
    import cv2
    import numpy as np
    import urllib
    import requests
    pytesseract.pytesseract.tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/tesseract'
    TESSDATA_PREFIX = 'C:/Program Files (x86)/Tesseract-OCR'
    from PIL import Image
    
    def url_to_image(url):
        resp = urllib.request.urlopen(url)
        image = np.asarray(bytearray(resp.read()), dtype="uint8")
        image = cv2.imdecode(image, cv2.IMREAD_COLOR)
        return image
    
    url='http://jeroen.github.io/images/testocr.png'
    
    
    img = url_to_image(url)
    
    
    #img = cv2.GaussianBlur(img,(5,5),0)
    img = cv2.medianBlur(img,5) 
    retval, img = cv2.threshold(img,150,255, cv2.THRESH_BINARY)
    txt = pytesseract.image_to_string(img, lang='eng')
    print('recognition:', txt)
    >>> txt
    'This ts a lot of 12 point text to test the\nocr code and see if it works on all types\nof file format\n\nThe quick brown dog jumped over the\nlazy fox The quick brown dog jumped\nover the lazy fox The quick brown dog\njumped over the lazy fox The quick\nbrown dog jumped over the lazy fox'
    

    Python:图像处理可产生皱纹纸效果 - python

    也许很难描述我的问题。我正在寻找Python中的算法,以在带有某些文本的白色图像上创建皱纹纸效果。我的第一个尝试是在带有文字的图像上添加一些真实的皱纹纸图像(具有透明度)。看起来不错,但副作用是文本没有真正起皱。所以我正在寻找更好的解决方案,有什么想法吗?谢谢 参考方案 除了使用透明性之外,假设您有两张相同尺寸的图像,一张在皱纹纸上明亮,一张在白色背景上有深…

    在返回'Response'(Python)中传递多个参数 - python

    我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…

    Python exchangelib在子文件夹中读取邮件 - python

    我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…

    python JSON对象必须是str,bytes或bytearray,而不是'dict - python

    在Python 3中,要加载以前保存的json,如下所示:json.dumps(dictionary)输出是这样的{"('Hello',)": 6, "('Hi',)": 5}当我使用json.loads({"('Hello',)": 6,…

    Python GPU资源利用 - python

    我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…