相关文章推荐
#https://market.aliyun.com/products/57124001/cmapi023866.html?spm=a2c0j.8222507.973837.1.4dd8e532YZ2wUE#sku=yuncode1786600000
#https://market.aliyun.com/products/57124001/cmapi028554.html?spm=a2c0j.8222507.1092900.1.4dd8e532YZ2wUE#sku=yuncode2255400000
#图像数据:base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,和url参数只能同时存在一个\"img\":\"\",
#图像url地址:图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,和img参数只能同时存在一个\"url\":\"\",
#是否需要识别结果中每一行的置信度,默认不需要。true:需要false:不需要\"prob\":false,
#是否需要单字识别功能,默认不需要。true:需要false:不需要\"charInfo\":false,
#是否需要自动旋转功能,默认不需要。true:需要false:不需要\"rotate\":false,
#是否需要表格识别功能,默认不需要。true:需要false:不需要\"table\":false
import urllib
import urllib.request
import urllib.parse
import json
import ssl
import base64
import cv2
class ALI_OCR():
    def __init__(self):
        """ APPID AK SK """
        self.APPCODE = '47fcde151a52426db0f61fede1c69507'
        #self.APPCODE = 'cb1f7559255140ab989d319be313c1b7'
        #印刷文字识别-文档小说图片文字识别
        self.url="https://ocrapi-document.taobao.com/ocrservice/document"
        #通用文字识别-高精版
        #self.url="https://ocrapi-advanced.taobao.com/ocrservice/advanced"
        self.headers = {
         'Authorization': 'APPCODE '+self.APPCODE,
         'Content-Type': 'application/json; charset=UTF-8'
    """ 读取图片 """
    def get_file_content(self,filePath):
        with open(filePath, 'rb') as fp:
            return base64.b64encode(fp.read())
    def draw_rectangle(self,img,coordinate_list,color):
        cv2.line(img,(int(coordinate_list[0]["x"]),int(coordinate_list[0]["y"])),(int(coordinate_list[1]["x"]),int(coordinate_list[1]["y"])),color,thickness=2)
        cv2.line(img,(int(coordinate_list[1]["x"]),int(coordinate_list[1]["y"])),(int(coordinate_list[2]["x"]),int(coordinate_list[2]["y"])),color,thickness=2)
        cv2.line(img,(int(coordinate_list[2]["x"]),int(coordinate_list[2]["y"])),(int(coordinate_list[3]["x"]),int(coordinate_list[3]["y"])),color,thickness=2)
        cv2.line(img,(int(coordinate_list[3]["x"]),int(coordinate_list[3]["y"])),(int(coordinate_list[0]["x"]),int(coordinate_list[0]["y"])),color,thickness=2)
        return img
    def process(self,image_name):
            img = self.get_file_content(image_name).decode()
            dict = {'img': img,'prob': 'false'}
            params=json.dumps(dict).encode(encoding='UTF8')
            req = urllib.request.Request(self.url, params,self.headers)
            ctx = ssl.create_default_context()
            ctx.check_hostname = False
            ctx.verify_mode = ssl.CERT_NONE
            r = urllib.request.urlopen(req, context=ctx)
            html =r.read()
            return html.decode("utf8")
        except urllib.error.HTTPError as e:
            print(e.code)
            print(e.read().decode("utf8"))
    def save_result_pic_txt(self,input_img,input_json,save_pic=True,save_txt=True,save_dir="./result/"):
        result_json=json.loads(input_json)
        img=cv2.imread(input_img)
        if save_txt:
            txt_name=save_dir+input_img.split("/")[-1].split(".")[0]+".txt"
            file_writer=open(txt_name,"w",encoding="utf-8")
            for lines in result_json["prism_wordsInfo"]:
                coordinate_list=lines["pos"]
                img=scan_ocr.draw_rectangle(img,coordinate_list,color=(0,0,255))
                print(lines['word'])
                file_writer.write(lines['word']+"\n")
            file_writer.close()
        if save_pic:
            #cv2.imshow("result",img)
            #cv2.waitKey()
            cv2.imwrite(save_dir+input_img.split("/")[-1],img)
if __name__=="__main__":
    scan_ocr=ALI_OCR()
    image_name='test.png'
    result_str=scan_ocr.process(image_name)
    scan_ocr.save_result_pic_txt(image_name,result_str,save_pic=True,save_txt=True,save_dir="./result_ali/")
# coding=utf-8
##https://cloud.baidu.com/doc/OCR/OCR-Python-SDK.html
import os
import cv2
from aip import AipOcr
#pip3 install baidu-aip
class BAIDU_OCR():
    def __init__(self):
        """ APPID AK SK """
        self.APP_ID = '10122282'
        self.API_KEY = 'weGcK2iHjzOA80VnwT14d1yZ'
        self.SECRET_KEY = '8z7YkTPNF6rS4a6l6F98Fc5a06cvLM44'
        self.APP_ID = '10122118'
        self.API_KEY = 'LI8ZEszLmscbLwYN38azHGgG'
        self.SECRET_KEY = '2aWkfvdHXNUVrXzdVvA6nBQxoeIgbvbG'
        self.client = AipOcr(self.APP_ID, self.API_KEY, self.SECRET_KEY)
    """ 读取图片 """
    def get_file_content(self,filePath):
        with open(filePath, 'rb') as fp:
            return fp.read()
    def process(self,image_name):
        image = self.get_file_content(image_name)
        """ 调用通用文字识别(含位置信息版), 图片参数为本地图片 """
        result=self.client.general(image)
        """ 调用通用文字识别(含位置高精度版) """
        #result=self.client.accurate(image)
        return result
    def save_result_pic_txt(self,input_img,input_json,save_pic=True,save_txt=True,save_dir="./result/"):
        img=cv2.imread(input_img)
        if save_txt:
            txt_name=save_dir+input_img.split("/")[-1].split(".")[0]+".txt"
            file_writer=open(txt_name,"w",encoding="utf-8")
            for word_result in result["words_result"]:
                x1=word_result["location"]["left"]
                y1=word_result["location"]["top"]
                x2=x1+word_result["location"]["width"]
                y2=y1+word_result["location"]["height"]
                cv2.rectangle(img,(x1,y1),(x2,y2),color=(0,0,255),thickness=2)
                file_writer.write(word_result["words"]+"\n")
                print(word_result["words"])
            file_writer.close()
        if save_pic:
            #cv2.imshow("result",img)
            #cv2.waitKey()
            cv2.imwrite(save_dir+input_img.split("/")[-1],img)
if __name__=="__main__":
    scan_ocr=BAIDU_OCR()
    image_name='test.png'
    result=scan_ocr.process(image_name)
    scan_ocr.save_result_pic_txt(image_name,result,save_pic=True,save_txt=True,save_dir="./result_baidu/")

face++

#https://console.faceplusplus.com.cn/documents/7776484
#图片要求:
#图片格式:JPG(JPEG),PNG
#图片像素尺寸:最小48*48像素,最大800*800像素
#图片文件大小:2MB
import requests
from json import JSONDecoder
import json
import cv2
class FACEPLUSPLUS_OCR():
    def __init__(self):
        """ APPID AK SK """
        self.api_key = "1mCONgxd9oRMjezN9PJd0l-hjdqVT5xS"
        self.api_secret="FrX9rbKZi6CNsiN8ee-ISaVnRhRVkPTc"
        self.url="https://api-cn.faceplusplus.com/imagepp/v1/recognizetext"
        self.data = {"api_key": self.api_key, "api_secret": self.api_secret}
    def draw_rectangle(self,img,coordinate_list,color):
        cv2.line(img,(int(coordinate_list[0]["x"]),int(coordinate_list[0]["y"])),(int(coordinate_list[1]["x"]),int(coordinate_list[1]["y"])),color,thickness=2)
        cv2.line(img,(int(coordinate_list[1]["x"]),int(coordinate_list[1]["y"])),(int(coordinate_list[2]["x"]),int(coordinate_list[2]["y"])),color,thickness=2)
        cv2.line(img,(int(coordinate_list[2]["x"]),int(coordinate_list[2]["y"])),(int(coordinate_list[3]["x"]),int(coordinate_list[3]["y"])),color,thickness=2)
        cv2.line(img,(int(coordinate_list[3]["x"]),int(coordinate_list[3]["y"])),(int(coordinate_list[0]["x"]),int(coordinate_list[0]["y"])),color,thickness=2)
        return img
    def process(self,image_name):
            files = {"image_file": open(image_name, "rb")}
            response = requests.post(self.url, data=self.data, files=files)
            req_con = response.content.decode('utf-8')
            req_dict = JSONDecoder().decode(req_con)
            return req_dict
        except Exception as e:
            print(e)
    def save_result_pic_txt(self,input_img,input_json,save_pic=True,save_txt=True,save_dir="./result/"):
        img=cv2.imread(input_img)
        if save_txt:
            txt_name=save_dir+input_img.split("/")[-1].split(".")[0]+".txt"
            file_writer=open(txt_name,"w",encoding="utf-8")
            for objects in input_json["result"]:
                print(objects["value"])
                file_writer.write(objects["value"]+"\n")
                for lines in objects["child-objects"]:
                    coordinate_list=lines["position"]
                    img=scan_ocr.draw_rectangle(img,coordinate_list,color=(0,0,255))
                    #print(lines['value'])
            file_writer.close()
        if save_pic:
            #cv2.imshow("result",img)
            #cv2.waitKey()
            cv2.imwrite(save_dir+input_img.split("/")[-1],img)
if __name__=="__main__":
    scan_ocr=FACEPLUSPLUS_OCR()
    image_name='test.png'
    result_json=scan_ocr.process(image_name)
    scan_ocr.save_result_pic_txt(image_name,result_json,save_pic=True,save_txt=True,save_dir="./result_faceplusplus/")
#/usr/bin/env python
#coding=utf8
##http://ai.youdao.com/docs/doc-ocr-api.s#p01
import hashlib
import urllib
import urllib.request
import random
import json
import base64
import cv2
        self.langType = 'zh-en'
        self.salt = random.randint(1, 65536)
        self.url='http://openapi.youdao.com/ocrapi'
    """ 读取图片 """
    def get_file_content(self,filePath):
        with open(filePath, 'rb') as fp:
            return base64.b64encode(fp.read())
    def draw_rectangle(self,img,coordinate_list,color):
        cv2.line(img,(int(coordinate_list[0]),int(coordinate_list[1])),(int(coordinate_list[2]),int(coordinate_list[3])),color,thickness=2)
        cv2.line(img,(int(coordinate_list[2]),int(coordinate_list[3])),(int(coordinate_list[4]),int(coordinate_list[5])),color,thickness=2)
        cv2.line(img,(int(coordinate_list[4]),int(coordinate_list[5])),(int(coordinate_list[6]),int(coordinate_list[7])),color,thickness=2)
        cv2.line(img,(int(coordinate_list[6]),int(coordinate_list[7])),(int(coordinate_list[0]),int(coordinate_list[1])),color,thickness=2)
        return img
    def process(self,image_name):
            img = self.get_file_content(image_name)
            sign = self.appKey+img.decode()+str(self.salt)+self.secretKey
            m1 = hashlib.md5()
            m1.update(sign.encode("utf8"))
            sign = m1.hexdigest()
            data = {'appKey':self.appKey,'img':img,'detectType':self.detectType,'imageType':self.imageType,'langType':self.langType,'salt':str(self.salt),'sign':sign}
            data = urllib.parse.urlencode(data).encode(encoding='utf-8')
            req = urllib.request.Request(self.url,data)
            #response是HTTPResponse对象
            response = urllib.request.urlopen(req)
            output_str=response.read().decode('utf-8')
            return output_str
        except Exception as e:
            print ("except:",e)
        finally:
            if httpClient:
                httpClient.close()
                return ""
    def save_result_pic_txt(self,input_img,input_json,save_pic=True,save_txt=True,save_dir="./result/"):
        result_json=json.loads(input_json)
        img=cv2.imread(input_img)
        if save_txt:
            txt_name=save_dir+input_img.split("/")[-1].split(".")[0]+".txt"
            file_writer=open(txt_name,"w",encoding="utf-8")
            for regions in result_json["Result"]["regions"]:
                img=scan_ocr.draw_rectangle(img,regions["boundingBox"].split(','),color=(0,255,0))
                for lines in regions['lines']:
                    coordinate_list=lines["boundingBox"]
                    img=scan_ocr.draw_rectangle(img,coordinate_list.split(','),color=(0,0,255))
                    print(lines['text'])
                    file_writer.write(lines['text']+"\n")
            file_writer.close()
        if save_pic:
            #cv2.imshow("result",img)
            #cv2.waitKey()
            cv2.imwrite(save_dir+input_img.split("/")[-1],img)
if __name__=="__main__":
    scan_ocr=YOUDAO_OCR()
    image_name='test.png'
    result_str=scan_ocr.process(image_name)
    scan_ocr.save_result_pic_txt(image_name,result_str,save_pic=True,save_txt=True,save_dir="./result_youdao/")
阿里读光#https://market.aliyun.com/products/57124001/cmapi023866.html?spm=a2c0j.8222507.973837.1.4dd8e532YZ2wUE#sku=yuncode1786600000#https://market.aliyun.com/products/57124001/cmapi028554.html?spm=a2c0j.8222507.1092900.1.4dd8e532YZ2wUE#sku=yuncode2255400
因为以前公司有这个需求所以我有去了解实现这个功能 ocr即:图片文字识别功能。就是读取图片上的文件信息,展示出来。一开始为成本考虑我想自己实现这个功能。于是查阅资料整理dome,基于roc语言库,真就让我写了一个文字识别功能出来。但是效果就一言难尽了。总的来说就是只有正面的,图像清晰的图片才能识别出去除了格式的文字信息出来。自己用一用还行,但是想要用到产品上进行商用还行洗洗睡吧。 自己的不行,就用别人的。一番查找对比以后最终有两家平台可以使用(基于效果和成本考虑),一家是百度一家是阿里。如果减低要求使用,百
阿里旷视 百度 OCR图片文字识别功能对比 因为项目中需要用到图片转文字的功能看到网上有挺多这方面的API 所以测试下哪个产品的功能更好目前选中了阿里 旷视 和百度这三家的API 旷视识别出来的结果 沨1当初的爱你 下面的是旷视把结果返回的json字符串 {"image_id":"AvOVDQxfja9cu+rL0mYurQ==", "result":[{"
最近要做一个普通转换文字的开发,在进行实际代码编写之前,研究了几大公司的OCR免费接口,用POSTMAN进行了调试;开发语言是JAVA,先把比较结果公布给大家。想要源码,可以私信给我。 先上传一个要转换的图片 第一个选择的是阿里云的OCR接口,运行后的结果如下: "RequestId": "A7493FA8-163F-457D-8A44-20B14A0FD0E6", "Data": { "Results": [ "TextRectangles": {
最近有个小程序的项目,要求使用OCR对名片及车辆的照片进行智能识别。该文会将BAT AI平台OCR功能试用的情况进行详细说明。OCR测试源码已共享,具体参见文末。 百度AI平台也叫做百度大脑,分为开放能力、开发平台、行业应用、生态合作、AI市场、开发与教学等栏目。 百度在开发平台上较有特色:比如命名为飞桨的开源深度学习平台等 百度开源深度学习平台 2、阿里 阿里的AI服务与...
1 研究背景 人工智能是研究开发能够模拟、延伸和扩展人类智能的理论、方法、技术及应用系统的一门新的技术科学,研究目的是促使智能机器会听(语音识别、机器翻译等)、会看(图像识别、文字识别等)、会说(语音合成、人机对话等)、会思考(人机对弈、定理证明等)、会学习(机器学习、知识表示等)、会行动(机器人、自动驾驶汽车等)。 人工智能充满未知的探索道路曲折起伏。如何描述人工智能自1956年以来60余年的发展历程,学术界可谓仁者见仁、智者见智。通过查阅资料将人工智能的发展历程划分为以下6个阶段: 一是起步发展期:19
1.AT+CWJAP_CUR=“TP-LINK_0141”,“password” 2.AT+CIPSSLSIZE=4096 3.AT+CIPSTART=“SSL”,“ocrapi-advanced.taobao.com”,443 4.AT+CIPMODE=1 5.AT+CIPSEND 6.这个是我抓包得到的POST请求(没办法我不知道这个POST请求怎么写,于是乎上网学习抓包),不需要回车,直接发 POST https://ocrapi-advanced.taobao.com/ocrservice/adva
懒人视频字幕提取:字幕提取、语音识别转字幕 一般OCR识别工具都用的是大厂识别引擎,如百度、搜狗、阿里…… 而这些引擎厂商中又属百度最财大气粗,个人只要5月27号前申请并实名便有5W次/天的免费OCR识别额度,之后申请的会调整为1000次/月虽然今天介绍的软件都内置了演示版接口可以直接使用,但由于是公共接口,使用人数多,精度也差,所以强烈建议大家都自己申请一个接口(免费的,操作也很简单) 自己的还可以使用高精度的文字识别A
def ocr_api_call(image_path): # 阿里OCR API接口地址 api_url = "https://ocrcp.market.alicloudapi.com/rest/160601/ocr/ocr_idcard.json" # 您的阿里云API Key appcode = "您的阿里云API Key" headers = { 'Authorization': 'APPCODE ' + appcode, 'Content-Type': 'application/json; charset=UTF-8' # 将图片文件读入内存并转换为base64编码 with open(image_path, "rb") as image_file: image_data = base64.b64encode(image_file.read()).decode("utf-8") # 将图片数据作为请求参数发送请求 data = { "inputs": [ "image": { "dataType": 50, "dataValue": image_data "configure": { "dataType": 50, "dataValue": "{\"side\":\"face\"}" response = requests.post(api_url, headers=headers, json=data) # 解析响应结果 result = response.json() return result # 调用OCR API result = ocr_api_call("image.jpg") print(result) 请注意,您需要在代码中替换为您的阿里云API Key。希望这个代码示例对您有所帮助!
 
推荐文章