ocr+sha256

sha256

package com.onestar.ymf;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;

public class SHA256WithoutKey {
    public static void main1(String[] args) {
        try {
            // 初始化MessageDigest
            MessageDigest sha256 = MessageDigest.getInstance("SHA-256");
 
            // 要哈希的字符串
            String inputString = "ahyycg@123123";
 
            // 使用update方法处理数据
            sha256.update(inputString.getBytes("UTF-8"));
 
            // 完成哈希计算,获取哈希值
            byte[] hashBytes = sha256.digest();
 
            // 将哈希值转换为十六进制字符串
            StringBuilder hashString = new StringBuilder();
            for (byte b : hashBytes) {
                String hex = Integer.toHexString(0xff & b);
                if (hex.length() == 1) {
                    hashString.append('0');
                }
                hashString.append(hex);
            }
 
            // 打印哈希值
            System.out.println("SHA-256: " + hashString.toString());
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    public static void main(String[] args) {
        String s = "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";
        generateImage(s,"code");
    }

    public static String generateImage(String file, String path) {
        // 解密
        try {
            // 项目绝对路径
            String savePath = "D:\\testFile\\";
            // 图片分类路径+图片名+图片后缀
            //String imgClassPath = path.concat(UUID.randomUUID().toString()).concat(".jpg");
            String imgClassPath = path.concat(".jpg");
            // 解密
            Base64.Decoder decoder = Base64.getDecoder();
            // 去掉base64前缀 data:image/jpeg;base64,
            file = file.substring(file.indexOf(",", 1) + 1, file.length());
            byte[] b = decoder.decode(file);
            // 处理数据
            for (int i = 0; i < b.length; ++i) {
                if (b[i] < 0) {
                    b[i] += 256;
                }
            }
            File tempFile = new File(savePath);
            //判断文件目录是否存才 不存在创建 避免OutputStream发现不存在报异常
            if (!tempFile.exists()) {
                tempFile.mkdirs();
            }
            // 保存图片
            OutputStream out = new FileOutputStream(tempFile.getPath()+ File.separator+imgClassPath);
            out.write(b);
            out.flush();
            out.close();
            // 返回图片的相对路径 = 图片分类路径+图片名+图片后缀
            return imgClassPath;
        } catch (IOException e) {
            return null;
        }
    }


}

tess4j

package com.onestar.ymf;

import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import java.io.File;
import java.awt.*;

public class MainServer {
   public static void main(String[] args) throws TesseractException {
       long start = System.currentTimeMillis();
       System.out.println("开始OCR文字识图,请稍后...");
       //加载要识别的图片
       File image = new File("D:\\testFile\\123.png");
       //设置配置文件夹微视、识别语言、识别模式
       Tesseract tesseract = new Tesseract();
       tesseract.setDatapath("D:\\tessdata");
       //设置识别语言为中文简体,(如果要设置为英文可改为"eng")
       tesseract.setLanguage("eng");
       //使用 OSD 进行自动页面分割以进行图像处理
       tesseract.setPageSegMode(1);
       //设置引擎模式是神经网络LSTM引擎
       tesseract.setOcrEngineMode(1);
       //开始识别整张图片中的文字
       String result = tesseract.doOCR(image);
       long time = System.currentTimeMillis()-start;
       System.out.println("识别结束,耗时:"+time+" 毫秒,识别结果如下:");
       System.out.println();
       System.out.println(result);
   }
}

依赖

       <!-- Tesseract OCR -->
        <dependency>
            <groupId>net.sourceforge.tess4j</groupId>
            <artifactId>tess4j</artifactId>
             <version>5.9.0</version>
        </dependency>
相关推荐
paopaokaka_luck6 分钟前
基于Spring Boot+Vue的多媒体素材管理系统的设计与实现
java·数据库·vue.js·spring boot·后端·算法
视觉小萌新22 分钟前
VScode+opencv——关于opencv多张图片拼接成一张图片的算法
vscode·opencv·算法
2的n次方_33 分钟前
二维费用背包问题
java·算法·动态规划
simple_ssn1 小时前
【C语言刷力扣】1502.判断能否形成等差数列
c语言·算法·leetcode
寂静山林1 小时前
UVa 11855 Buzzwords
算法
Curry_Math1 小时前
LeetCode 热题100之技巧关卡
算法·leetcode
ahadee1 小时前
蓝桥杯每日真题 - 第10天
c语言·vscode·算法·蓝桥杯
军训猫猫头2 小时前
35.矩阵格式的一到一百数字 C语言
c语言·算法
Mr_Xuhhh3 小时前
递归搜索与回溯算法
c语言·开发语言·c++·算法·github
SoraLuna3 小时前
「Mac玩转仓颉内测版12」PTA刷题篇3 - L1-003 个位数统计
算法·macos·cangjie