【photoshop CEP插件】 OCR文字识别

这是一个photoshop面板插件,我练手的,本插件完全开源,不加密,用户可以学习了解HTML面板的运作流程。

插件目前实现文字识别和二维码识别,如果需要识别其他类型,可以参考百度AI。

插件下载:一个photoshop CEP插件OCR文字识别

OCR采用的百度AI OCR识别node.js接口

APP_ID = 17594920
API_KEY = puMFv72xqCYV2jdcSlXgtFvm
SECRET_KEY = v5XHtqKXEm0p6ehPZrXIXrftDvocyv1m
/*********************************************/
百度OCR 密钥由Greless@qq.com 提供测试, 用户可自行前往https://ai.baidu.com/docs#/Auth/top 申请。
通用文字识别        免费使用    50000次/天免费
 
通用文字识别(含位置信息版)    免费使用    500次/天免费
 
通用文字识别(高精度版)    免费使用    500次/天免费

通用文字识别(高精度含位置版)免费使用    50次/天免费

二维码识别        免费使用    剩余免费1000次 
/*********************************************/

点击开始识别,识别的文字在PS中生成图层名称,同时在桌面生成OCR.txt文档。
OCR插件仅支持CC2018以上。CC2018,2019,2020,2021版本测试通过。

主要js代码:


var Ocr = function()
{  	

try{
	var cs= new CSInterface();
 	var fs = require("fs");
	var extensionPath= cs.getSystemPath(SystemPath.EXTENSION);
  
	var ocrType=document.getElementById("ocrType"); 
	//var	selectedIndex=ocrType.selectedIndex;
	var check0=document.getElementById("check0");
	var check1=document.getElementById("check1");
	var check2=document.getElementById("check2");
	//	alert(checkSelection.checked)
	// cs.evalScript('alert("'+a+'")');
 
		
		 /* // 持久化运行
		  var event = new CSEvent();//创建一个事件
		  event.type = "com.adobe.PhotoshopPersistent"; //注册持久化运行事件
		  event.scope = "APPLICATION";
		  event.extensionId = cs.getExtensionID(); // 我们的扩展 ID
		  cs.dispatchEvent(event); //发送事件让宿主持久化运行我们的扩展	   
		
		*/
		
	
	  var Path= undefined;
	 var p1 = new Promise(function (resolve, reject) {
		 
	 if(check0.checked)
		cs.evalScript('SaveSelection()',function(result){resolve(result); }); 	 
	else if(check1.checked)
		cs.evalScript('SaveCurrentLayer()',function(result){resolve(result);  }); 	
	else if(check2.checked)
		cs.evalScript('SaveAllLayer()',function(result){resolve(result);  }); 	 
	else	 
		cs.evalScript('SaveAllLayer()',function(result){resolve(result);  }); 	
   
});

var p2 = p1.then(function (result) {
   // alert('成功:' + result);
	Path=result;
	if(result=="undefined" || result==undefined ) 		 
	{	
		alert('失败:' + result);
		return;
	} 
	 
	if(ocrType.selectedIndex==4)
		BaiduAIQRcode(Path,ocrType.selectedIndex);
	else
		BaiduAI(Path,ocrType.selectedIndex);
});
var p3 = p2.catch(function (reason) {
    alert('失败:' + reason);
});
 
	}catch(e){alert(e);}; 
}

function BaiduAI(Path,Index)
{
	try{
	var cs= new CSInterface();
 	var fs = require("fs");
	var AipOcrClient = require("baidu-aip-sdk").ocr;	  
		
	// 设置APPID/AK/SK
	var APP_ID = "17594920";
	var API_KEY = "puMFv72xqCYV2jdcSlXgtFvm";
	var SECRET_KEY = "v5XHtqKXEm0p6ehPZrXIXrftDvocyv1m";

	// 新建一个对象,建议只保存一个对象调用服务接口
	var client = new AipOcrClient(APP_ID, API_KEY, SECRET_KEY);
	var HttpClient = require("baidu-aip-sdk").HttpClient;
	  
	// 设置request库的一些参数,例如代理服务地址,超时时间等
	// request参数请参考 https://github.com/request/request#requestoptions-callback
	HttpClient.setRequestOptions({timeout: 5000});

	// 也可以设置拦截每次请求(设置拦截后,调用的setRequestOptions设置的参数将不生效),
	// 可以按需修改request参数(无论是否修改,必须返回函数调用参数)
	// request参数请参考 https://github.com/request/request#requestoptions-callback
	HttpClient.setRequestInterceptor(function(requestOptions) {
		// 查看参数
		console.log(requestOptions)
		// 修改参数
		requestOptions.timeout = 5000;
		// 返回参数
		return requestOptions;
	});

	 var fs = require('fs');
 
	var image = fs.readFileSync(Path).toString("base64");

	// 调用通用文字识别, 图片参数为本地图片	 
	//https://ai.baidu.com/docs#/OCR-Node-SDK/top
	//普通识别:generalBasic;高精度:accurateBasic ;位置:generalUrl;高精度位置:accurate ;二维码:qrcode
	if(Index==0)
		var ocrParam=client.generalBasic(image);
	else if(Index==1)
		var ocrParam=client.accurateBasic(image);
	else if(Index==2)
		var ocrParam=client.generalUrl(image);
	else if(Index==3)
		var ocrParam=client.accurate(image);
	else
		alert("未定义识别模式")

	ocrParam.then(function(result) {		
		 
		 var error=result.error_code;
		 if(error!="undefined" &&error!=undefined ) 		 
			 alert(JSON.stringify(result)); 
		 
		 
		 // 打印识别数据
		  var num=result.words_result_num;
		 for(var i=0;i<num;i++)
		 {
			 var name=result.words_result[i].words;	
			 
			 var location=result.words_result[i].location;
			  if(location!=undefined && location!="undefined")
			  {
				 name=name+" left:"+ location.left+" top:"+ location.top+" width:"+ location.width+" height:"+ location.height+" "
			  }	
			  
			cs.evalScript('addLayerText("'+name+'")');  
			//	写到桌面
			cs.evalScript('WriteData("'+name+'")');  
		 }
		 
	}).catch(function(err) {
		// 如果发生网络错误
		//alert(err,"err");
		alert("网络错误","err");
		//cs.evalScript('alert("'+err+'")');		
	});
	
		}catch(e){alert(e);}; 
}
 
 
 function BaiduAIQRcode(Path,Index)
{
	try{
	var cs= new CSInterface();
 	var fs = require("fs");
	var AipOcrClient = require("baidu-aip-sdk").ocr;	  
		
	// 设置APPID/AK/SK
	var APP_ID = "17594920";
	var API_KEY = "puMFv72xqCYV2jdcSlXgtFvm";
	var SECRET_KEY = "v5XHtqKXEm0p6ehPZrXIXrftDvocyv1m";

	// 新建一个对象,建议只保存一个对象调用服务接口
	var client = new AipOcrClient(APP_ID, API_KEY, SECRET_KEY);
	var HttpClient = require("baidu-aip-sdk").HttpClient;
	  
	// 设置request库的一些参数,例如代理服务地址,超时时间等
	// request参数请参考 https://github.com/request/request#requestoptions-callback
	HttpClient.setRequestOptions({timeout: 5000});

	// 也可以设置拦截每次请求(设置拦截后,调用的setRequestOptions设置的参数将不生效),
	// 可以按需修改request参数(无论是否修改,必须返回函数调用参数)
	// request参数请参考 https://github.com/request/request#requestoptions-callback
	HttpClient.setRequestInterceptor(function(requestOptions) {
		// 查看参数
		console.log(requestOptions)
		// 修改参数
		requestOptions.timeout = 5000;
		// 返回参数
		return requestOptions;
	});

	 var fs = require('fs');
 
	var image = fs.readFileSync(Path).toString("base64");

	// 调用通用文字识别, 图片参数为本地图片	 
	//https://ai.baidu.com/docs#/OCR-Node-SDK/top
	//普通识别:generalBasic;高精度:accurateBasic ;位置:generalUrl;高精度位置:accurate ;二维码:qrcode
	client.qrcode(image).then(function(result) {		
		 
		 var error=result.error_code;
		 if(error=="undifined") 
			alert(JSON.stringify(result)); 
		 
		 // 打印识别数据
		  var num=result.codes_result_num;
		 for(var i=0;i<num;i++)
		 {
			 var name=result.codes_result[i].text;	

			cs.evalScript('addLayerText("'+name+'")');  
			//	写到桌面
			cs.evalScript('WriteData("'+name+'")');  
		 }
		 
	}).catch(function(err) {
		// 如果发生网络错误
		//alert(err,"err");
		alert("网络错误","err");
		//cs.evalScript('alert("'+err+'")');			
	});
	
		}catch(e){alert(e);}; 
}
 
 

 


 

 

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值