提交修改

This commit is contained in:
quyixiao 2025-08-19 22:49:02 +08:00
parent fd960804e8
commit 372e2990fd
3 changed files with 198 additions and 116 deletions

View File

@ -5,6 +5,7 @@ package com.heyu.api.data.utils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.Base64; import java.util.Base64;
@ -19,12 +20,15 @@ import java.util.regex.Pattern;
* @author linzi * @author linzi
*/ */
@Slf4j @Slf4j
public class StringUtils extends org.apache.commons.lang3.StringUtils public class StringUtils extends org.apache.commons.lang3.StringUtils {
{ /**
/** 空字符串 */ * 空字符串
*/
private static final String NULLSTR = ""; private static final String NULLSTR = "";
/** 下划线 */ /**
* 下划线
*/
private static final char SEPARATOR = '_'; private static final char SEPARATOR = '_';
/** /**
@ -33,8 +37,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
* @param value defaultValue 要判断的value * @param value defaultValue 要判断的value
* @return value 返回值 * @return value 返回值
*/ */
public static <T> T nvl(T value, T defaultValue) public static <T> T nvl(T value, T defaultValue) {
{
return value != null ? value : defaultValue; return value != null ? value : defaultValue;
} }
@ -44,8 +47,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
* @param coll 要判断的Collection * @param coll 要判断的Collection
* @return true为空 false非空 * @return true为空 false非空
*/ */
public static boolean isEmpty(Collection<?> coll) public static boolean isEmpty(Collection<?> coll) {
{
return isNull(coll) || coll.isEmpty(); return isNull(coll) || coll.isEmpty();
} }
@ -55,8 +57,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
* @param coll 要判断的Collection * @param coll 要判断的Collection
* @return true非空 false * @return true非空 false
*/ */
public static boolean isNotEmpty(Collection<?> coll) public static boolean isNotEmpty(Collection<?> coll) {
{
return !isEmpty(coll); return !isEmpty(coll);
} }
@ -64,10 +65,9 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
* * 判断一个对象数组是否为空 * * 判断一个对象数组是否为空
* *
* @param objects 要判断的对象数组 * @param objects 要判断的对象数组
** @return true为空 false非空 * * @return true为空 false非空
*/ */
public static boolean isEmpty(Object[] objects) public static boolean isEmpty(Object[] objects) {
{
return isNull(objects) || (objects.length == 0); return isNull(objects) || (objects.length == 0);
} }
@ -77,8 +77,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
* @param objects 要判断的对象数组 * @param objects 要判断的对象数组
* @return true非空 false * @return true非空 false
*/ */
public static boolean isNotEmpty(Object[] objects) public static boolean isNotEmpty(Object[] objects) {
{
return !isEmpty(objects); return !isEmpty(objects);
} }
@ -88,8 +87,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
* @param map 要判断的Map * @param map 要判断的Map
* @return true为空 false非空 * @return true为空 false非空
*/ */
public static boolean isEmpty(Map<?, ?> map) public static boolean isEmpty(Map<?, ?> map) {
{
return isNull(map) || map.isEmpty(); return isNull(map) || map.isEmpty();
} }
@ -99,8 +97,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
* @param map 要判断的Map * @param map 要判断的Map
* @return true非空 false * @return true非空 false
*/ */
public static boolean isNotEmpty(Map<?, ?> map) public static boolean isNotEmpty(Map<?, ?> map) {
{
return !isEmpty(map); return !isEmpty(map);
} }
@ -110,8 +107,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
* @param str String * @param str String
* @return true为空 false非空 * @return true为空 false非空
*/ */
public static boolean isEmpty(String str) public static boolean isEmpty(String str) {
{
return isNull(str) || NULLSTR.equals(str.trim()); return isNull(str) || NULLSTR.equals(str.trim());
} }
@ -121,8 +117,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
* @param str String * @param str String
* @return true非空串 false空串 * @return true非空串 false空串
*/ */
public static boolean isNotEmpty(String str) public static boolean isNotEmpty(String str) {
{
return !isEmpty(str); return !isEmpty(str);
} }
@ -132,13 +127,12 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
* @param object Object * @param object Object
* @return true为空 false非空 * @return true为空 false非空
*/ */
public static boolean isNull(Object object) public static boolean isNull(Object object) {
{
return object == null; return object == null;
} }
/** /**
*校验是否为数字 * 校验是否为数字
*/ */
public static boolean checkStrIsNum(String str) { public static boolean checkStrIsNum(String str) {
Matcher isNum = NUMBER_PATTERN.matcher(str); Matcher isNum = NUMBER_PATTERN.matcher(str);
@ -147,19 +141,18 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
} }
return true; return true;
} }
// 判断整数数字的正则表达式 // 判断整数数字的正则表达式
private static Pattern NUMBER_PATTERN = Pattern.compile("^[-\\+]?[\\d]*$"); private static Pattern NUMBER_PATTERN = Pattern.compile("^[-\\+]?[\\d]*$");
/** /**
* * 判断一个对象是否非空 * * 判断一个对象是否非空
* *
* @param object Object * @param object Object
* @return true非空 false * @return true非空 false
*/ */
public static boolean isNotNull(Object object) public static boolean isNotNull(Object object) {
{
return !isNull(object); return !isNull(object);
} }
@ -169,44 +162,37 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
* @param object 对象 * @param object 对象
* @return true是数组 false不是数组 * @return true是数组 false不是数组
*/ */
public static boolean isArray(Object object) public static boolean isArray(Object object) {
{
return isNotNull(object) && object.getClass().isArray(); return isNotNull(object) && object.getClass().isArray();
} }
/** /**
* 去空格 * 去空格
*/ */
public static String trim(String str) public static String trim(String str) {
{
return (str == null ? "" : str.trim()); return (str == null ? "" : str.trim());
} }
/** /**
* 截取字符串 * 截取字符串
* *
* @param str 字符串 * @param str 字符串
* @param start 开始 * @param start 开始
* @return 结果 * @return 结果
*/ */
public static String substring(final String str, int start) public static String substring(final String str, int start) {
{ if (str == null) {
if (str == null)
{
return NULLSTR; return NULLSTR;
} }
if (start < 0) if (start < 0) {
{
start = str.length() + start; start = str.length() + start;
} }
if (start < 0) if (start < 0) {
{
start = 0; start = 0;
} }
if (start > str.length()) if (start > str.length()) {
{
return NULLSTR; return NULLSTR;
} }
@ -216,43 +202,35 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/** /**
* 截取字符串 * 截取字符串
* *
* @param str 字符串 * @param str 字符串
* @param start 开始 * @param start 开始
* @param end 结束 * @param end 结束
* @return 结果 * @return 结果
*/ */
public static String substring(final String str, int start, int end) public static String substring(final String str, int start, int end) {
{ if (str == null) {
if (str == null)
{
return NULLSTR; return NULLSTR;
} }
if (end < 0) if (end < 0) {
{
end = str.length() + end; end = str.length() + end;
} }
if (start < 0) if (start < 0) {
{
start = str.length() + start; start = str.length() + start;
} }
if (end > str.length()) if (end > str.length()) {
{
end = str.length(); end = str.length();
} }
if (start > end) if (start > end) {
{
return NULLSTR; return NULLSTR;
} }
if (start < 0) if (start < 0) {
{
start = 0; start = 0;
} }
if (end < 0) if (end < 0) {
{
end = 0; end = 0;
} }
@ -263,10 +241,8 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/** /**
* 下划线转驼峰命名 * 下划线转驼峰命名
*/ */
public static String toUnderScoreCase(String str) public static String toUnderScoreCase(String str) {
{ if (str == null) {
if (str == null)
{
return null; return null;
} }
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
@ -276,31 +252,23 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
boolean curreCharIsUpperCase = true; boolean curreCharIsUpperCase = true;
// 下一字符是否大写 // 下一字符是否大写
boolean nexteCharIsUpperCase = true; boolean nexteCharIsUpperCase = true;
for (int i = 0; i < str.length(); i++) for (int i = 0; i < str.length(); i++) {
{
char c = str.charAt(i); char c = str.charAt(i);
if (i > 0) if (i > 0) {
{
preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1)); preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1));
} } else {
else
{
preCharIsUpperCase = false; preCharIsUpperCase = false;
} }
curreCharIsUpperCase = Character.isUpperCase(c); curreCharIsUpperCase = Character.isUpperCase(c);
if (i < (str.length() - 1)) if (i < (str.length() - 1)) {
{
nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1)); nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1));
} }
if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) {
{
sb.append(SEPARATOR); sb.append(SEPARATOR);
} } else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase) {
else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase)
{
sb.append(SEPARATOR); sb.append(SEPARATOR);
} }
sb.append(Character.toLowerCase(c)); sb.append(Character.toLowerCase(c));
@ -312,18 +280,14 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/** /**
* 是否包含字符串 * 是否包含字符串
* *
* @param str 验证字符串 * @param str 验证字符串
* @param strs 字符串组 * @param strs 字符串组
* @return 包含返回true * @return 包含返回true
*/ */
public static boolean inStringIgnoreCase(String str, String... strs) public static boolean inStringIgnoreCase(String str, String... strs) {
{ if (str != null && strs != null) {
if (str != null && strs != null) for (String s : strs) {
{ if (str.equalsIgnoreCase(trim(s))) {
for (String s : strs)
{
if (str.equalsIgnoreCase(trim(s)))
{
return true; return true;
} }
} }
@ -337,27 +301,21 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
* @param name 转换前的下划线大写方式命名的字符串 * @param name 转换前的下划线大写方式命名的字符串
* @return 转换后的驼峰式命名的字符串 * @return 转换后的驼峰式命名的字符串
*/ */
public static String convertToCamelCase(String name) public static String convertToCamelCase(String name) {
{
StringBuilder result = new StringBuilder(); StringBuilder result = new StringBuilder();
// 快速检查 // 快速检查
if (name == null || name.isEmpty()) if (name == null || name.isEmpty()) {
{
// 没必要转换 // 没必要转换
return ""; return "";
} } else if (!name.contains("_")) {
else if (!name.contains("_"))
{
// 不含下划线仅将首字母大写 // 不含下划线仅将首字母大写
return name.substring(0, 1).toUpperCase() + name.substring(1); return name.substring(0, 1).toUpperCase() + name.substring(1);
} }
// 用下划线将原始字符串分割 // 用下划线将原始字符串分割
String[] camels = name.split("_"); String[] camels = name.split("_");
for (String camel : camels) for (String camel : camels) {
{
// 跳过原始字符串中开头结尾的下换线或双重下划线 // 跳过原始字符串中开头结尾的下换线或双重下划线
if (camel.isEmpty()) if (camel.isEmpty()) {
{
continue; continue;
} }
// 首字母大写 // 首字母大写
@ -370,30 +328,22 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/** /**
* 驼峰式命名法 例如user_name->userName * 驼峰式命名法 例如user_name->userName
*/ */
public static String toCamelCase(String s) public static String toCamelCase(String s) {
{ if (s == null) {
if (s == null)
{
return null; return null;
} }
s = s.toLowerCase(); s = s.toLowerCase();
StringBuilder sb = new StringBuilder(s.length()); StringBuilder sb = new StringBuilder(s.length());
boolean upperCase = false; boolean upperCase = false;
for (int i = 0; i < s.length(); i++) for (int i = 0; i < s.length(); i++) {
{
char c = s.charAt(i); char c = s.charAt(i);
if (c == SEPARATOR) if (c == SEPARATOR) {
{
upperCase = true; upperCase = true;
} } else if (upperCase) {
else if (upperCase)
{
sb.append(Character.toUpperCase(c)); sb.append(Character.toUpperCase(c));
upperCase = false; upperCase = false;
} } else {
else
{
sb.append(c); sb.append(c);
} }
} }
@ -401,8 +351,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <T> T cast(Object obj) public static <T> T cast(Object obj) {
{
return (T) obj; return (T) obj;
} }
@ -448,4 +397,86 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
return sb.toString(); return sb.toString();
} }
/*
* 文件名URIEncode.java 描述 修改人gogym 修改时间2018年11月16日 跟踪单号 修改单号 修改内容
*/
public static final String ALLOWED_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.!~*'()";
/**
* Description:
*
* @param str
* @return
* @throws UnsupportedEncodingException
* @see
*/
public static String encodeURI(String str)
throws UnsupportedEncodingException {
String isoStr = new String(str.getBytes("UTF8"), "ISO-8859-1");
char[] chars = isoStr.toCharArray();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < chars.length; i++) {
if ((chars[i] <= 'z' && chars[i] >= 'a') || (chars[i] <= 'Z' && chars[i] >= 'A')
|| chars[i] == '-' || chars[i] == '_' || chars[i] == '.' || chars[i] == '!'
|| chars[i] == '~' || chars[i] == '*' || chars[i] == '\'' || chars[i] == '('
|| chars[i] == ')' || chars[i] == ';' || chars[i] == '/' || chars[i] == '?'
|| chars[i] == ':' || chars[i] == '@' || chars[i] == '&' || chars[i] == '='
|| chars[i] == '+' || chars[i] == '$' || chars[i] == ',' || chars[i] == '#'
|| (chars[i] <= '9' && chars[i] >= '0')) {
sb.append(chars[i]);
} else {
sb.append("%");
sb.append(Integer.toHexString(chars[i]));
}
}
return sb.toString();
}
/**
* Description:
*
* @param input
* @return
* @see
*/
public static String encodeURIComponent(String input) {
if (null == input || "".equals(input.trim())) {
return input;
}
int l = input.length();
StringBuilder o = new StringBuilder(l * 3);
try {
for (int i = 0; i < l; i++) {
String e = input.substring(i, i + 1);
if (ALLOWED_CHARS.indexOf(e) == -1) {
byte[] b = e.getBytes("utf-8");
o.append(getHex(b));
continue;
}
o.append(e);
}
return o.toString();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return input;
}
private static String getHex(byte buf[]) {
StringBuilder o = new StringBuilder(buf.length * 3);
for (int i = 0; i < buf.length; i++) {
int n = (int) buf[i] & 0xff;
o.append("%");
if (n < 0x10) {
o.append("0");
}
o.append(Long.toString(n, 16).toUpperCase());
}
return o.toString();
}
} }

View File

@ -10,6 +10,7 @@ import com.heyu.api.data.annotation.EbAuthentication;
import com.heyu.api.data.constants.ApiConstants; import com.heyu.api.data.constants.ApiConstants;
import com.heyu.api.data.utils.ApiR; import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R; import com.heyu.api.data.utils.R;
import com.heyu.api.data.utils.StringUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -42,6 +43,17 @@ public class GeneralBasicOcrController extends BaseController {
public R recognize(GeneralBasicOcrRequest generalBasicOcrRequest) throws Exception { public R recognize(GeneralBasicOcrRequest generalBasicOcrRequest) throws Exception {
//String base64 = Base64Utils.encodeImageToBase64("/Users/quyixiao/Desktop/ocr/testxxx.jpg");
//log.info("base64 :{}",base64);
//String xx = StringUtils.encodeURIComponent(base64);
//log.info("xx :{}",xx);
//读取文件内容到Stream流中按行读取 //读取文件内容到Stream流中按行读取
//Stream<String> lines = Files.lines(Paths.get("/Users/quyixiao/gitb/eb-service-api/api-web/api-interface/src/main/resources/filebase64.txt")); //Stream<String> lines = Files.lines(Paths.get("/Users/quyixiao/gitb/eb-service-api/api-web/api-interface/src/main/resources/filebase64.txt"));
@ -71,6 +83,24 @@ public class GeneralBasicOcrController extends BaseController {
//generalBasicOcrRequest.setImageBase64(null); //generalBasicOcrRequest.setImageBase64(null);
//generalBasicOcrRequest.setPdfFile("xxxxxx"); //generalBasicOcrRequest.setPdfFile("xxxxxx");
if(StringUtils.isNotBlank(generalBasicOcrRequest.getImageBase64())){
String imageBase64 = StringUtils.encodeURIComponent(generalBasicOcrRequest.getImageBase64());
generalBasicOcrRequest.setImageBase64(imageBase64);
}
if(StringUtils.isNotBlank(generalBasicOcrRequest.getPdfFile())){
String pdfFile = StringUtils.encodeURIComponent(generalBasicOcrRequest.getPdfFile());
generalBasicOcrRequest.setPdfFile(pdfFile);
}
if(StringUtils.isNotBlank(generalBasicOcrRequest.getOfdFile())){
String ofdFile = StringUtils.encodeURIComponent(generalBasicOcrRequest.getOfdFile());
generalBasicOcrRequest.setOfdFile(ofdFile);
}
BGeneralBasicRequest bGeneralBasicRequest = new BGeneralBasicRequest(); BGeneralBasicRequest bGeneralBasicRequest = new BGeneralBasicRequest();
bGeneralBasicRequest.setImageBase64(generalBasicOcrRequest.getImageBase64()); bGeneralBasicRequest.setImageBase64(generalBasicOcrRequest.getImageBase64());
bGeneralBasicRequest.setImageUrl(generalBasicOcrRequest.getImageUrl()); bGeneralBasicRequest.setImageUrl(generalBasicOcrRequest.getImageUrl());

View File

@ -12,6 +12,7 @@ import com.heyu.api.data.annotation.EbAuthentication;
import com.heyu.api.data.constants.ApiConstants; import com.heyu.api.data.constants.ApiConstants;
import com.heyu.api.data.utils.ApiR; import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R; import com.heyu.api.data.utils.R;
import com.heyu.api.data.utils.StringUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -48,6 +49,26 @@ public class HighPrecisionOcrController {
//generalBasicOcrRequest.setImageUrl("https://heyuoss.oss-cn-shanghai.aliyuncs.com/prd/testxxx.jpg"); //generalBasicOcrRequest.setImageUrl("https://heyuoss.oss-cn-shanghai.aliyuncs.com/prd/testxxx.jpg");
if(StringUtils.isNotBlank(generalBasicOcrRequest.getImageBase64())){
String imageBase64 = StringUtils.encodeURIComponent(generalBasicOcrRequest.getImageBase64());
generalBasicOcrRequest.setImageBase64(imageBase64);
}
if(StringUtils.isNotBlank(generalBasicOcrRequest.getPdfFile())){
String pdfFile = StringUtils.encodeURIComponent(generalBasicOcrRequest.getPdfFile());
generalBasicOcrRequest.setPdfFile(pdfFile);
}
if(StringUtils.isNotBlank(generalBasicOcrRequest.getOfdFile())){
String ofdFile = StringUtils.encodeURIComponent(generalBasicOcrRequest.getOfdFile());
generalBasicOcrRequest.setOfdFile(ofdFile);
}
BDocAnalysisOfficeRequest bGeneralBasicRequest = new BDocAnalysisOfficeRequest(); BDocAnalysisOfficeRequest bGeneralBasicRequest = new BDocAnalysisOfficeRequest();
bGeneralBasicRequest.setImageBase64(generalBasicOcrRequest.getImageBase64()); bGeneralBasicRequest.setImageBase64(generalBasicOcrRequest.getImageBase64());
bGeneralBasicRequest.setImageUrl(generalBasicOcrRequest.getImageUrl()); bGeneralBasicRequest.setImageUrl(generalBasicOcrRequest.getImageUrl());