php 搞图文识别功能,怎么才能识别印章
本帖最后由 zzdd111 于 2023-4-4 15:38 编辑老板让搞图文识别,成功一部分,但是印章这个还是不能成功,我想问问各位大神,怎么实现识别印章这个功能?
识别这中印章https://ss0.baidu.com/7Po3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/0b46f21fbe096b638953ad690d338744ebf8ac45.jpg 利用OCR的API,例百度:https://cloud.baidu.com/doc/OCR/s/Mk3h7y47a
是调用第三方api不行嘛 本帖最后由 ouzhzh 于 2023-4-4 16:22 编辑
楼主的意思是要识别印章,还是要识别印章里的文字?识别印章的话,可以扫描,也可以提取。好像眼下还没有可以识别文字,同时又能把印章识别并单独弄在一边的软件(因为印章是盖在文字上的)。 百度OCR:百度公司推出的OCR识别服务,支持多种类型的印章识别功能,包括公章、私章、合同章等。
阿里云OCR:阿里云推出的OCR识别服务,支持印章的类型和位置检测,能够识别公章、私章、发票章等。
腾讯优图OCR:腾讯优图推出的OCR识别服务,支持多种文本和印章识别,能够快速识别公章、合同章、营业执照章等印章类型。
我的理解是你想用php实现印章识别(包括印章上的公司名称),如果大家都是用的电子印章,直接对接电子印章技术方的API就可以,如果是纸质扫描件的印章最便捷的方式确实就是3楼所说的印章识别API接入,有很多第三方(百度、合合)已经支持调用。如果你是想免费白嫖,那就只能借用开源的项目,例如使用Flask PaddlePaddle PaddleX架构的chapter_tagging项目,但是很关键的一个问题是识别率,第三方API识别率会高不少。 本帖最后由 宝宝丷 于 2023-4-4 19:39 编辑
// 配置 APP_ID, API_KEY, SECRET_KEY
$app_id = 'YOUR_APP_ID';
$api_key = 'YOUR_API_KEY';
$secret_key = 'YOUR_SECRET_KEY';
// 印章图片路径
$image_path = 'YOUR_IMAGE_PATH';
// 调用百度OCR API 进行印章识别
$url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/seal';
$access_token = get_access_token($app_id, $api_key, $secret_key);
$img_base64 = base64_encode(file_get_contents($image_path));
$data = array(
'image' => $img_base64,
'detect_direction' => 'true',
'probability' => 'true'
);
$result = request_post($url, $data, $access_token);
// 输出结果
print_r($result);
// 获取百度 OCR API 的 access_token
function get_access_token($app_id, $api_key, $secret_key) {
$url = 'https://aip.baidubce.com/oauth/2.0/token';
$post_data['grant_type'] = 'client_credentials';
$post_data['client_id'] = $api_key;
$post_data['client_secret'] = $secret_key;
$o = "";
foreach ($post_data as $k=>$v)
{
$o.= "$k=" . urlencode( $v ). "&" ;
}
$post_data = substr($o,0,-1);
$res = request_post($url, $post_data);
$access_token = json_decode($res, true)['access_token'];
return $access_token;
}
// 发送 POST 请求
function request_post($url = '', $post_data = array(), $access_token = '') {
if(false == $url || empty($post_data)){
return false;
}
if(!empty($access_token)){
$url = $url.'?access_token='.$access_token;
}
$o = "";
foreach ($post_data as $k=>$v)
{
$o.= "$k=" . urlencode( $v ). "&" ;
}
$post_data = substr($o,0,-1);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
以上代码中,$app_id、$api_key、$secret_key 分别为百度 OCR API 的 APP_ID、API_KEY 和 SECRET_KEY,需要替换成自己的信息;$image_path 为要识别的印章图片路径,也需要替换成自己的路径。运行代码后,会输出印章识别结果。 宝宝丷 发表于 2023-4-4 19:37
// 配置 APP_ID, API_KEY, SECRET_KEY
$app_id = 'YOUR_APP_ID';
$api_key = 'YOU ...
注册帐号分别替换就可以用了吗 各位脑洞比较大,哈哈:keai 342520a 发表于 2023-4-4 15:51
全能扫描王
政府相关的,不让用百度
页:
[1]
2