You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows 10下基于OCR识别批量重命名含文字图片文件的方法咨询

Windows 10下基于OCR识别批量重命名含文字图片文件的方法咨询

嗨,我来给你分享几个在Windows 10上实现这个需求的实用方案,不管你是偏好图形化操作还是愿意写点简单脚本,都能找到合适的路子!

方法一:PowerShell + Windows内置OCR(无额外软件依赖)

Windows 10 1903及以上版本自带了OCR引擎,不用额外下载第三方工具,用PowerShell就能搞定批量处理,步骤如下:

  1. 先确认内置OCR已启用:打开设置 > 应用 > 可选功能,检查是否有“光学字符识别”,如果没有就点击“添加功能”搜索安装。
  2. 复制下面的脚本,保存为RenameImagesWithOCR.ps1
# 加载Windows OCR相关的.NET程序集
Add-Type -AssemblyName Windows.Media.Ocr
Add-Type -AssemblyName Windows.Storage
Add-Type -AssemblyName System.Drawing

# 替换为你的图片文件夹实际路径
$imageFolder = "C:\Your\Image\Folder"

# 获取文件夹内的常见图片格式文件
$imageFiles = Get-ChildItem -Path $imageFolder -Include *.jpg,*.png,*.bmp -File

foreach ($file in $imageFiles) {
    $bitmap = [System.Drawing.Bitmap]::FromFile($file.FullName)
    try {
        # 创建OCR引擎(使用系统默认语言)
        $ocrEngine = [Windows.Media.Ocr.OcrEngine]::TryCreateFromUserProfileLanguages()
        if ($ocrEngine) {
            # 将Bitmap转换为OCR支持的格式
            $lockBits = $bitmap.LockBits(
                [System.Drawing.Rectangle]::FromLTRB(0,0,$bitmap.Width,$bitmap.Height),
                [System.Drawing.Imaging.ImageLockMode]::ReadOnly,
                [System.Drawing.Imaging.PixelFormat]::Format32bppArgb
            )
            $softwareBitmap = [Windows.Graphics.Imaging.SoftwareBitmap]::CreateCopyFromBuffer(
                $lockBits.Scan0,
                [Windows.Graphics.Imaging.BitmapPixelFormat]::Bgra8,
                $bitmap.Width,
                $bitmap.Height
            )
            $bitmap.UnlockBits($lockBits)

            # 执行OCR识别
            $ocrResult = $ocrEngine.RecognizeAsync($softwareBitmap).AsTask().Result
            if ($ocrResult.Text -and $ocrResult.Text.Trim() -ne "") {
                # 过滤文件名非法字符
                $cleanText = $ocrResult.Text.Trim() -replace '[<>:"/\\|?*]', '_'
                $newFilePath = Join-Path -Path $imageFolder -ChildPath "$cleanText$($file.Extension)"
                
                # 处理重名,自动加数字后缀
                $counter = 1
                while (Test-Path $newFilePath) {
                    $newFilePath = Join-Path -Path $imageFolder -ChildPath "$cleanText_$counter$($file.Extension)"
                    $counter++
                }

                # 执行重命名
                Rename-Item -Path $file.FullName -Destination $newFilePath
                Write-Host "✅ 已重命名: $($file.Name) -> $($newFilePath | Split-Path -Leaf)"
            } else {
                Write-Host "❌ 无法识别文件文本: $($file.Name)"
            }
        } else {
            Write-Host "⚠️ 无法创建OCR引擎,请检查语言包"
        }
    } finally {
        $bitmap.Dispose()
    }
}
  1. 右键脚本文件,选择用PowerShell运行(权限不足就用管理员身份运行),等待执行完成即可。

方法二:IrfanView + OCR插件(图形化操作,适合新手)

如果你不想碰代码,这个图形化工具方案简单易上手:

  • 下载安装IrfanView(轻量免费图片查看器),再下载对应版本的OCR插件(IrfanView_OCR_plugin.exe)并安装。
  • 打开IrfanView,点击顶部菜单文件 > 批量转换/重命名
  • 点击添加文件/目录,选中要处理的图片。
  • 切换到批量重命名标签页,点击高级,在设置里选择OCR文本作为文件名(插件安装后才会显示)。
  • 开启“替换非法字符为下划线”,点击预览确认新文件名,没问题就点击开始批量重命名

方法三:Python脚本(灵活定制,适合有编程基础的用户)

要是你想自定义识别规则(比如提取特定区域文本、多语言适配),可以用Python结合Tesseract OCR实现:

  1. 安装Tesseract OCR:下载官方安装包,安装后建议将路径(比如C:\Program Files\Tesseract-OCR)添加到系统环境变量PATH
  2. 安装依赖库:打开命令提示符,执行pip install pytesseract pillow
  3. 编写脚本保存为rename_images_ocr.py
import os
import re
import pytesseract
from PIL import Image

# 替换为你的图片文件夹路径
IMAGE_FOLDER = r"C:\Your\Image\Folder"

# 若Tesseract未加PATH,取消注释并填写完整路径
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

for filename in os.listdir(IMAGE_FOLDER):
    file_ext = os.path.splitext(filename)[1].lower()
    if file_ext in ['.png', '.jpg', '.jpeg', '.bmp']:
        file_path = os.path.join(IMAGE_FOLDER, filename)
        try:
            # OCR识别,lang参数:chi_sim=中文,eng=英文,可按需调整
            with Image.open(file_path) as img:
                ocr_text = pytesseract.image_to_string(img, lang='chi_sim').strip()
            
            if ocr_text:
                # 过滤非法字符
                clean_text = re.sub(r'[<>:"/\\|?*]', '_', ocr_text)
                new_file_name = f"{clean_text}{file_ext}"
                new_file_path = os.path.join(IMAGE_FOLDER, new_file_name)
                
                # 处理重名
                counter = 1
                while os.path.exists(new_file_path):
                    new_file_name = f"{clean_text}_{counter}{file_ext}"
                    new_file_path = os.path.join(IMAGE_FOLDER, new_file_name)
                    counter += 1
                
                os.rename(file_path, new_file_path)
                print(f"✅ 已重命名: {filename} -> {new_file_name}")
            else:
                print(f"❌ 无法识别图片文本: {filename}")
        except Exception as e:
            print(f"⚠️ 处理{filename}出错: {str(e)}")
  1. 在命令提示符进入脚本目录,执行python rename_images_ocr.py即可。

实用小提示

  • 提高识别率:若图片模糊、对比度低,可先批量调整亮度/对比度,或裁剪无关区域后再识别。
  • 备份文件:批量操作前建议复制一份图片备份,避免意外。
  • 语言适配:若图片是其他语言,记得安装对应OCR语言包(PowerShell在设置里添加,Tesseract需下载对应训练数据)。

备注:内容来源于stack exchange,提问作者Bumpcity

火山引擎 最新活动