OCR / tesseract / OpenCV中有什么方法可以从图像的特定区域提取文本?

时间:2019-06-12 11:39:01

标签: python artificial-intelligence ocr tesseract text-extraction

我正在使用AI设置新的发票提取方法,我能够从发票图像中识别“总计” /“公司详细信息”,但需要帮助,通过指定区域来从发票图像中识别的特定区域提取数据在图像中(Xmin,Xmax,Ymin,Ymax)?

2 个答案:

答案 0 :(得分:0)

您好像是新鸟,所以让我帮助您快速了解关键字中使用的术语。

OCR是光学字符识别的一个概念 Tesseract是用于OCR的特殊库处理。 OpenCV帮助图像处理库帮助进行对象检测和识别。

是的,您可以使用tesseract库从图像中提取超过300dpi的文本 但是在此之前,如果文本的字体非常新或系统未知,则应使用该字体训练tesseract模型。

请记住,如果您能够在调用tesseract之前对文本进行盒装图像处理,那么它将更加准确。

某些单词-盒子图像,dpi会创建警报,但这是您工作的关键概念。

我的建议是,如果您想从图像中提取数字,请分步进行。

  • 通过增强图像质量来处理图像。

  • 检测要提取的区域。

  • 找到轮廓和区域。

  • 将其传递到箱型图像编辑器并调整参数

  • 最后将它交给Tesseract。

答案 1 :(得分:0)

AWS最近启动了一项名为Textract的服务,该服务完全可以实现您想要实现的目标。

博客文章+示例:https://aws.amazon.com/blogs/machine-learning/automatically-extract-text-and-structured-data-from-documents-with-amazon-textract/

您可以提供图像,PDF和Excel文件,它可以提取任何文本并将其转换为对象。我尚未使用该服务,但计划在周末使用。

下面的Python示例:

import boto3

# Document
s3BucketName = "ki-textract-demo-docs"
documentName = "simple-document-image.jpg"

# Amazon Textract client
textract = boto3.client('textract')

# Call Amazon Textract
response = textract.detect_document_text(
    Document={
        'S3Object': {
            'Bucket': s3BucketName,
            'Name': documentName
        }
    })

#print(response)

# Print detected text
for item in response["Blocks"]:
    if item["BlockType"] == "LINE":
        print ('\033[94m' +  item["Text"] + '\033[0m')