【批量识别图片内容改名】如何批量识别图片中的文字并自动改名,如何根据图片上的文字内容重命名图片,批量的识别区域内容如何重命名改名,全部告诉你

废话:

在工作和生活和学习工作中我们经常遇到大量的图片需要进行根据图片内容来重命名图片

有的是扫描全部图片内容进行重命名,文字必须是少量的255个字

有的是需要获取图片指定位置的图片内容进行重命名,多字段拼接

那么我们说下这两种方式的实现原理和操作步骤供大家借鉴

如果你的图片没有超过1000张,建议还是人工处理了算了,东西研究明白,1000张早改完啦呵呵,大量重复的图片人工确实搞不定的,建议往下看

因为涉及到代码相关的操作,非计算机相关专业,如果自己搞不定的我们可以提供源代码的修改帮助大家来完成遇到的复杂的问题提高工作效率

Windows详细命名规则如下:

1、允许文件或者文件夹名称不得超过255个字符;

2、 文件名除了开头之外任何地方都可以使用空格;

3、文件名中不能有下列符号:“?”、“、”、“╲”、“/”、“*”、““”、“”“、“<”、“>”、“|”;

 

4、 Windows 98文件名不区分大小写,但在显示时可以保留大小写格式;

5、 文件名中可以包含多个间隔符。
 

实现思路(文章末尾下载软件):

第一步、取图分析图片

第二步、进行光学ocr返回结果

第三步、分析结果

第四步、改名

实现步骤:

第一步、循环获取图片

获取图片:png、jpg、bmp、tif、jpeg等采用file类拿到fileName

第二步、循环将图进行光学ocr处理

远程使用可以用ai接口引擎就比较快,也可以用本地的授权组件比较慢,按需选择

第一、整张图全部扫描识别

取到图片bitMap位图转成base64字节就直接给到远程的ocr识别的ai引擎全部扫描完,返回字符,去除不能作为文件名的字符,消除windows不给起名的规则,新旧文件名moveTo

第二、整张图选择区域扫描识别

区域扫描识别相对来说比较复杂,获取到图片,定位关键字出现的位置,拿到图片分为,x,y坐标,width、height,定位切图,就是把一部分的图截取下来识别,这样可以提高识别率,如果不同像素的图片要根据dpi去计算位置的比例

就比如这些红色方框固定位置,多张发票位置依旧是不变的,那我们就很容易根据坐标去拿到发票号,发票日期,发票的购买方和销售方的信息,给切片出来然后递交ocr进行光学处理,识别后进行字符拼接新旧文件名利用File类的moveTo方法进行操作

发票号区域识别重命名例子:

百度下载链接:https://pan.baidu.com/s/1mWsg7mDZq2pZ8xdKzdn5Hg?pwd=8866 

腾讯网盘下载链接:文件分享https://share.weiyun.com/a77jklXK如果需要重命名发票其他位置或者其他图片可以评论区留言,也可以试试软件后我们再做对应的源代码的修改

这里提供一种基于Windows操作系统的C代码示例,可以批量重命名指定目录下的所有.tif格式图片,将它们改名为指定前缀加上自增序号的格式,如"prefix_001.tif", "prefix_002.tif"等。 ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <dirent.h> #include <windows.h> int main() { char* dir_path = "C:\\directory\\to\\images"; //指定目录路径 char* prefix = "new_prefix"; //指定新前缀 int count = 1; //文件计数器,从1开始 int prefix_len = strlen(prefix); char old_file_path[MAX_PATH], new_file_path[MAX_PATH]; struct dirent* entry; DIR* dir = opendir(dir_path); if (dir == NULL) { //目录打开失败 printf("Error: failed to open directory.\n"); return -1; } while ((entry = readdir(dir)) != NULL) { //遍历目录下所有文件 if (entry->d_type == DT_REG && strstr(entry->d_name, ".tif") != NULL) { //只处理.tif格式文件 sprintf(old_file_path, "%s\\%s", dir_path, entry->d_name); sprintf(new_file_path, "%s\\%s_%0*d.tif", dir_path, prefix, prefix_len, count); //生成新文件名 if (rename(old_file_path, new_file_path) != 0) { //重命名失败 printf("Error: failed to rename file %s.\n", entry->d_name); } else { printf("Renamed file %s to %s.\n", entry->d_name, new_file_path); count++; //计数器加1 } } } closedir(dir); return 0; } ``` 上述代码,使用了Windows系统的文件重命名函数`rename()`,它的参数分别为旧文件名和新文件名,如果重命名成功则返回0,否则返回非零值。新文件名的生成使用了`sprintf()`函数,其`%s`表示字符串格式,`%0*d`表示补零格式,具体可以参考C语言格式化输出的相关资料。 运行代码时需要将`dir_path`和`prefix`变量修改为实际值,同时需要注意目录路径的反斜杠`\`需要转义为双反斜杠`\\`,否则会被视为转义字符导致路径错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气的咕嘎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值