什么都不必说–简单图片金额识别OCR

什么都不必说–简单图片金额识别OCR

大家好,又见面了,我是你们的朋友全栈君。

需求 获取图片中金额
复制代码

1.添加maven

  <!--图片识别-->
        <dependency>
            <groupId>net.sourceforge.tess4j</groupId>
            <artifactId>tess4j</artifactId>
            <version>2.0.1</version>
            <exclusions>
                <exclusion>
                    <groupId>com.sun.jna</groupId>
                    <artifactId>jna</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
复制代码

2.安装tessdata

brew install tesseract 
复制代码

3.工具类

public class OCRUtil {
    private static String  tessdataPath;
    private static String STRING_TESS_VARIABLE_KEY = "tessedit_char_whitelist";
    private static String STRING_TESS_VARIABLE_VALUE = "0123456789.¥";
    private static String STRING_TESS_NAME = "tessdata";

    private ITesseract instance;

    private static OCRUtil ocrUtil;

    private OCRUtil(ITesseract instance){
        this.instance = instance;
    }

    private static final LogUtil logUtil  = LogUtil.init(OCRUtil.class);

    //必须加锁,在高并发情况下会出现jvm崩坏情况
    public  synchronized String getAmount(BufferedImage bi) throws IOException {
        long start = System.currentTimeMillis();
        try {

            String ocrResult = instance.doOCR(bi);
            if(StringUtil.isEmpty(ocrResult)){
                return null;
            }
            if(ocrResult.indexOf("¥") == -1){
                return null;
            }
            logUtil.i("金额识别 为:%s\n金额识别耗时:%s毫秒",ocrResult,System.currentTimeMillis()-start);
            return ocrResult.replace("\n","").substring(ocrResult.indexOf("¥") + 1).trim();
        } catch (TesseractException e) {
            System.err.println(e.getMessage());
        }
        return null;
    }

    public static synchronized OCRUtil init(){

        if(null == ocrUtil){
            ITesseract instance = new Tesseract(); // JNA Direct Mapping
            instance.setTessVariable(STRING_TESS_VARIABLE_KEY, STRING_TESS_VARIABLE_VALUE);
//            File tessDataFolder = LoadLibs.extractTessResources(STRING_TESS_NAME);
//            logUtil.d(tessDataFolder.getAbsolutePath());
            //从外部获取tessdataPath或者查询tessdata所在位置
            instance.setDatapath(tessdataPath);
            ocrUtil = new OCRUtil(instance);
        }

        return ocrUtil;

    }

}

复制代码

转载于:https://juejin.im/post/5b39d1bb6fb9a00e43467df9

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107444.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何使用lc5激活成功教程登录密码

    如何使用lc5激活成功教程登录密码注:以下步骤的实现都是在虚拟机上完成,且可用它猜解2000\Xp\2003密码。1,去网上下载lc5(必须包含注册机)。2,无脑安装lc5(一直下一步)。3,点击运行lc5和虚拟机4,在lc5

    2022年7月3日
    42
  • 免费申请国外免费域名超详细教程

    免费申请国外免费域名超详细教程1.首先申请免费域名网站:https://my.freenom.com/domains.php2.填入域名,这里我们以xcflag为列(尽量选择复杂一点的或者五个字母以上的域名,因为简单的有些域名是需要收费的),点击检查可用性。3.可以看到很多免费的域名(用的谷歌翻译插件,翻译有时候不是很准确,free翻译过来应该是免费而不是自由,之后会写一些关于谷歌插件的笔记,详细讲解)4.我们选择xcflag.tk点击立即获取,稍等一会点击购物车查看绿色按钮5.默认三个月试用,这里下拉框我们选择十二个月

    2022年6月30日
    63
  • win32API中文参考手册[通俗易懂]

    win32API中文参考手册[通俗易懂]中文在线手册:http://www.yfvb.com/help/win32sdk/下面也是中文手册chm版,排版不是很好蓝奏云下载:https://wws.lanzous.com/iw8E3fhlz5icsdn下载:https://download.csdn.net/download/weixin_43833642/12434848[会自动长积分]如果是初学,上面的api勉强够用,建议参考着原版英文一起学习!最后如果帮到你可以点个赞!感谢!…

    2022年10月11日
    2
  • 1310-全国-中国古代文学史(二)「建议收藏」

    1310-全国-中国古代文学史(二)「建议收藏」1310-全国-中国古代文学史(二)总分:100一、单选题(共30题,共30分)1、苏舜钦的诗歌风格是()(1分)A:豪犷雄放B:平淡瘦劲C:生新瘦硬D:​沉博绝丽2、我国最早的话本小说总集是嘉靖年间洪楩编辑刊刻的《六十家小说》,又称为()(1分)A:《古今小说》B:《清平山堂话本》C:《今古奇观》D:《型世言》3、徐渭《四声猿》中最杰出的一部作品是()(1分)A:《狂鼓史渔阳三弄》B:《玉禅师翠乡一梦》C:《雌木兰替父从军》D:《女状元辞凰得凤》4、被称为“昆曲之

    2022年5月18日
    50
  • Android busybox安装与vim Python IDE开发环境

    Android busybox安装与vim Python IDE开发环境在Android上安装BusyBox0.先要把手机给Root了,具体教程这里就不提供了,网上有很多。1.下载BusyBox的binary,打开这个地址 http://www.busybox.net/downloads/binaries 例如下载了:/downloads/binaries/1.21.1/中的busybox-armv7l2.把下载好的busybox-armv7l用

    2022年7月25日
    21
  • 蓝桥杯单片机矩阵按键扫描编程

    蓝桥杯单片机矩阵按键扫描编程

    2021年11月12日
    50

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号