[英]Is there any way in OCR/tesseract/OpenCV for extracting text from a particular region of an image?
我正在使用AI设置新的发票提取方法,我能够从发票图像中识别“总计”/“公司详细信息”,但需要帮助通过指定图像中的区域从发票图像中识别的特定区域中提取数据(Xmin,Xmax,Ymin,Ymax)?
看起来你是新手,所以让我帮助你快速了解关键字中使用的术语。
OCR是光学字符识别的一个概念Tesseract是OCR的特殊库处理。 OpenCV有助于图像处理库帮助进行对象检测和识别。
是的,您可以使用tesseract库从图像中提取超过300dpi的文本,但在此之前,您应该使用该字体训练tesseract模型,如果文本字体是新的或系统未知的话。
另外请记住,如果您能够在调用tesseract之前对文本进行包装图像处理,它将更准确地工作。
某些字框图像,dpi会创建警报,但这些是您工作的枢轴概念。
我的建议是,如果你想从图像中提取数字,请一步一步地进行。
通过提高图像质量来处理图像。
检测想要提取的区域。
找到轮廓和面积。
将其传递给盒式图像编辑器并调整参数
最后把它交给Tesseract。
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')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.