前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java使用Tesseract-OCR实战

Java使用Tesseract-OCR实战

作者头像
九转成圣
发布2024-04-10 18:23:23
1270
发布2024-04-10 18:23:23
举报
文章被收录于专栏:csdncsdn

Java使用Tesseract-OCR实战

标签:OCR

Tesseract-OCR安装

tesseract-ocr-w64-setup-v5.3.0.20221214.exe 选择安装目录,下一步,下一步默认安装

配置中文训练库

chi_sim.traineddata

放在安装目录下的tessdata下即可,例如D:\Program Files\Tesseract-OCR\tessdata

训练库地址:https://github.com/tesseract-ocr/tessdata

依赖

代码语言:javascript
复制
<!-- https://mvnrepository.com/artifact/net.sourceforge.tess4j/tess4j -->
<dependency>
    <groupId>net.sourceforge.tess4j</groupId>
    <artifactId>tess4j</artifactId>
    <version>5.3.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.bytedeco/javacv-platform -->
<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>javacv-platform</artifactId>
    <version>1.5.7</version>
</dependency>

代码

代码语言:javascript
复制
public class VideoTextExtractor {
    // Tesseract-OCR安装路径
    public static final String pathToTessdataFolder = "D:\\Program Files\\Tesseract-OCR\\tessdata\\";
    // 加载视频
    public static final String pathToVideoFile = "C:\\Users\\lixiewen\\Documents\\oCam\\录制_2023_05_31_09_39_51_172.mp4";
    // 解析结果
    public static final String resultFile = "E:\\tmp\\tmp.txt";


    public static void main(String[] args) throws TesseractException {
        extracted();
    }


    private static void extracted() {
        // 设置Tesseract OCR库的路径
        File tessDataFolder = new File(pathToTessdataFolder);
        System.setProperty("TESSDATA_PREFIX", tessDataFolder.getAbsolutePath());
        FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(pathToVideoFile);
        try {
            grabber.start();
            Set<String> set = new LinkedHashSet<>();
            // 遍历视频帧
            int lengthInFrames = grabber.getLengthInFrames();
            for (int i = 0; i < lengthInFrames; i++) {
                System.out.println("进度 " + i + " / " + lengthInFrames);
                try {
                    Frame frame = grabber.grabImage();
                    BufferedImage bufferedImage = Java2DFrameUtils.toBufferedImage(frame);

                    // 将帧转换为灰度图像
                    BufferedImage grayImage = new BufferedImage(bufferedImage.getWidth(), bufferedImage.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
                    Graphics2D graphics = grayImage.createGraphics();
                    graphics.drawImage(bufferedImage, 0, 0, null);
                    graphics.dispose();

                    // 创建临时文件保存图像
                    File tempImageFile = File.createTempFile("frame", ".png");
                    ImageIO.write(grayImage, "png", tempImageFile);

                    Tesseract tesseract = getTesseract(tessDataFolder);
                    String result = tesseract.doOCR(tempImageFile);
                    set.add(result);
                    // 删除临时文件
                    tempImageFile.delete();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            File file = new File(resultFile);

            FileUtils.write2File(file, new ArrayList<>(set));

            grabber.stop();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static Tesseract getTesseract(File tessDataFolder) {
        // 使用Tesseract OCR进行文字识别
        Tesseract tesseract = new Tesseract();
        // 设置中文训练库 中文准确率还是不如百度Orc
        tesseract.setLanguage("chi_sim");
        tesseract.setDatapath(tessDataFolder.getAbsolutePath());
        return tesseract;
    }
}

免安装方式

  1. 引入maven依赖
  2. 直接在代码里引入训练裤
代码语言:javascript
复制
public static ITesseract getTesseract() throws Exception {
    // 使用 Tesseract 识别文本
    ITesseract tesseract = new Tesseract();
    // 设置训练数据文件夹路径
    tesseract.setDatapath("src/main/resources/traineddata");
    // 设置为中文简体
    tesseract.setLanguage("chi_sim");
    return tesseract;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java使用Tesseract-OCR实战
    • 标签:OCR
    • Tesseract-OCR安装
    • 配置中文训练库
    • 依赖
    • 代码
    • 免安装方式
    相关产品与服务
    AI 应用产品
    文字识别(Optical Character Recognition,OCR)基于腾讯优图实验室的深度学习技术,将图片上的文字内容,智能识别成为可编辑的文本。OCR 支持身份证、名片等卡证类和票据类的印刷体识别,也支持运单等手写体识别,支持提供定制化服务,可以有效地代替人工录入信息。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档