当前位置: 首页 > news >正文

温州市城乡建设厅网站中能建西北城市建设门户网站

温州市城乡建设厅网站,中能建西北城市建设门户网站,wordpress自定义的注册,老铁外链工具一、相关的地址 https://github.com/tesseract-ocr/tessdata Releases - OpenCV opencv要装好,我装的是4.5.3的,最新版的没试过。 tessdata就下载了需要用的。好像还有best和fast的版本,我试了一下报错,不知道是不是版本不支持…

一、相关的地址

https://github.com/tesseract-ocr/tessdata

Releases - OpenCV

opencv要装好,我装的是4.5.3的,最新版的没试过。

tessdata就下载了需要用的。好像还有best和fast的版本,我试了一下报错,不知道是不是版本不支持的问题。

二、主要的思路

识别的代码到没什么特别的,就是在每一行的识别上,为了提高准确度,稍微花了点心思,但也不时很完善。

发现识别的时候会出现很多干扰,所以从“姓”这一行开始算第一行,然后一行一行分析。

如果图片不清晰,不是太准,有待改进。

三、代码

pom.xml的依赖:

        <!-- OpenCV --><dependency><groupId>org.openpnp</groupId><artifactId>opencv</artifactId><version>4.5.3-4</version></dependency><!--  Tesseract --><dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>5.11.0</version> <!-- 使用最新版本 --></dependency>

JAVA代码:

package com.yutiandada.idcardread.demos.test;import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;import net.sourceforge.tess4j.*;public class IDCardRecognition2 {static {System.setProperty("java.library.path", "D:\\opencv\\opencv\\build\\java\\x64");try {Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths");fieldSysPath.setAccessible(true);fieldSysPath.set(null, null);} catch (Exception e) {e.printStackTrace();}System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}public static Mat preprocessImage(String imagePath) {// 读取图像Mat image = Imgcodecs.imread(imagePath);// 可选:进行一些图像增强操作,例如锐化Mat enhancedImage = new Mat();Imgproc.GaussianBlur(image, enhancedImage, new Size(0, 0), 3);Core.addWeighted(image, 1.5, enhancedImage, -0.5, 0, enhancedImage);return enhancedImage;}public static List<String> recognizeText(Mat mat) throws TesseractException {try {// 将Mat转换为FileFile tempFile = File.createTempFile("temp", ".png");Imgcodecs.imwrite(tempFile.getAbsolutePath(), mat);// 初始化TesseractTesseract tesseract = new Tesseract();tesseract.setLanguage("chi_sim"); // 设置语言为简体中文tesseract.setDatapath("d:/tessdata"); // 设置Tesseract数据路径
//            tesseract.setPageSegMode(PageSegMode.PSM_AUTO); // 设置页面分割模式// 进行OCR识别String result = tesseract.doOCR(tempFile);tempFile.delete(); // 删除临时文件// 将结果按行分割List<String> lines = new ArrayList<>();String[] splitResult = result.split("\\r?\\n");for (String line : splitResult) {if (!line.trim().isEmpty()) {lines.add(line.trim());}}return lines;} catch (IOException e) {// 处理异常,例如记录日志或显示错误信息e.printStackTrace();throw new TesseractException("Error during OCR processing", e);}}public static void main(String[] args) {try {String imagePath = "D:/images/test01.png";Mat processedImage = preprocessImage(imagePath);List<String> recognizedLines = recognizeText(processedImage);System.out.println("Recognized Text:");// 找到包含“姓”字的行索引int startIndex = -1;for (int i = 0; i < recognizedLines.size(); i++) {if (recognizedLines.get(i).contains("姓") || recognizedLines.get(i).contains("名") ) {startIndex = i;break;}}if (startIndex != -1) {// 从包含“姓”字的行开始重新编号List<String> filteredLines = recognizedLines.subList(startIndex, recognizedLines.size());// 第一行:“姓名”之后的字符串String name = filteredLines.get(0).replaceAll(".*姓名", "").trim();System.out.println("Name: " + name);// 第二行:性别String gender = "";String ethnicity = "";String secondLine = filteredLines.get(1);if (secondLine.contains("男")) {gender = "男";} else if (secondLine.contains("女")) {gender = "女";}int minIndex = secondLine.indexOf("民") + 2;if (minIndex > 0 && minIndex < secondLine.length()) {ethnicity = secondLine.substring(minIndex).trim();}System.out.println("Gender: " + gender);System.out.println("Ethnicity: " + ethnicity);// 第三行:出生日期,只显示数字String thirdLine = filteredLines.get(2).replaceAll("[^0-9]", "").trim();if (thirdLine.length() == 8) {String birthYear = thirdLine.substring(0, 4);String birthMonth = thirdLine.substring(4, 6);String birthDay = thirdLine.substring(6, 8);System.out.println("Birth Year: " + birthYear);System.out.println("Birth Month: " + birthMonth);System.out.println("Birth Day: " + birthDay);} else {System.out.println("Invalid date format in the third line.");}// 第四行:地址String addressPart1 = filteredLines.get(3).replaceAll("\\s+", "").substring(2).trim();String addressPart2 = filteredLines.get(4).replaceAll("\\s+", "").trim();String address = addressPart1 + addressPart2;System.out.println("Address: " + address);// 第六行:身份证号,只显示数字和字母String idNumber = filteredLines.get(5).replaceAll("[^a-zA-Z0-9]", "").trim();System.out.println("ID Number: " + idNumber);} else {System.out.println("No line containing '姓' found.");}} catch (Exception e) {e.printStackTrace();}}
}

IDEA里面要配置一下

把安装好的OPENCV装一下

四、效果

网上随便找的图

识别的效果

http://www.yayakq.cn/news/927592/

相关文章:

  • 工信部网站域名备案做自媒体小视频哪个网站比较赚钱
  • 在线免费域名网站解析wordpress手机图片站
  • 广东省建设注册中心网站什么是网络营销评价
  • 西安专业做网站的选服务好的佛山网站建设
  • 网站实用性软件工程导论
  • 网站免费建站系统 六服务器如何发布网站
  • 外网代理服务器网站网站开发阶段流程
  • 网站设计欣赏导航云南省建设工作网站
  • 网站怎样制作网站正在建设中的图片
  • 达濠市政建设有限公司网站电商网站开发建设
  • 常用的网站开发语言网站建设方式优化
  • 浙江省建设监理协会管网站公众号怎么发文章
  • 河南郑州创建网站公司做损坏文档的网站
  • win7做网站著名展厅设计案例
  • php网站开发实国外效果图网站
  • wordpress photolux公司优化是什么意思?
  • 企业网站建设分析wordpress 网址全部变成ip
  • 快速网站备案房屋在线设计平台
  • 怎么做网站例如京东用asp做网站上网帮助
  • 桂林本地网站专门做进口产品的网站6
  • 织梦可以做哪些类型型网站微信卖水果小程序
  • 做网站一定要正版系统吗网页期末作业代码模板
  • dw用ps切片做网站app引流推广方法
  • 做网站编辑有前途珠海建设公司网站
  • 东莞网站建设方案维护石家庄专业网站制作公司
  • asp.net网站制作步骤如何下载别人网站模板
  • 创建虚拟网站做点击网页图片加载失败
  • 国内电商网站跳出率是多少渭南做网站电话
  • 怎么打开域名网站房山区文化活动中心有wifi吗
  • 酒店网站建设范文公司做的网站计入什么