You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

现有单页TIF识别代码如何修改以适配多页TIF文件的Tesseract识别

适配多页tif文件的代码修改方案

核心改动是在原有单文件处理逻辑中新增tif帧遍历逻辑,逐页识别文本即可同时兼容单页、多页tif文件,修改后的完整代码如下:

import glob
import os
import re
import pandas as pd
import pytesseract
from PIL import Image

data = []
data1 = []
listOfPages = glob.glob(r"C:/Users/name/folder/*.tif")
# 正则预编译放在循环外,避免重复编译提升性能
regex1 = re.compile(r'(www(i|ı)a\s+bbb(\:)?(\s+|\s+\.)?\s+(de(s|r(:)?))?)', flags = re.IGNORECASE)

for entry in listOfPages:
    # 修复原逻辑中非文件场景下filenames变量复用的bug
    if not os.path.isfile(entry):
        continue
    # 整合你提供的多页tif读取逻辑
    img = Image.open(entry)
    # 遍历tif所有页面
    for page_idx in range(img.n_frames):
        img.seek(page_idx)
        # 单页识别
        page_text = pytesseract.image_to_string(img, lang="en")
        # 替换换行符
        cleaned_text = re.sub(r'\n',' ', page_text)
        # 正则匹配
        var1 = None
        try:
            var1a = regex1.search(cleaned_text)
            if var1a:
                var1 = var1a.group(1)
        except:
            pass
        # 记录数据,每一页对应DataFrame的一行
        data.append([cleaned_text, var1])
        # 记录对应文件名,后缀加页号区分同一tif的不同页面
        data1.append(f"{entry}_第{page_idx+1}页")

# 生成DataFrame逻辑和原逻辑一致
df0 = pd.DataFrame(data, columns =['raw_text', 'var1'])
df01= pd.DataFrame(data1,columns =['filename'])
df1 = pd.concat([df0, df01], axis=1)
df1 = df1.reset_index(drop = True)

如果你需要将单个tif的所有页文本合并为一条记录(而不是每页单独一条),可以调整单文件处理逻辑:

单tif多页合并为一条记录的处理逻辑参考:

for entry in listOfPages:
    if not os.path.isfile(entry):
        continue
    img = Image.open(entry)
    all_text = ""
    # 遍历所有页累加文本
    for page_idx in range(img.n_frames):
        img.seek(page_idx)
        page_text = pytesseract.image_to_string(img, lang="en")
        all_text += f" {page_text}"
    # 后续清洗、匹配、记录逻辑放在帧遍历外即可
    cleaned_text = re.sub(r'\n',' ', all_text)
    var1 = None
    try:
        var1a = regex1.search(cleaned_text)
        if var1a:
            var1 = var1a.group(1)
    except:
        pass
    data.append([cleaned_text, var1])
    data1.append(entry)

内容的提问来源于stack exchange,提问作者id345678

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:15:03