news 2026/4/23 14:01:32

GLM-OCR详细步骤:扩展支持TIFF格式——添加PIL转换逻辑与边界处理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GLM-OCR详细步骤:扩展支持TIFF格式——添加PIL转换逻辑与边界处理

GLM-OCR详细步骤:扩展支持TIFF格式——添加PIL转换逻辑与边界处理

1. 项目背景与需求

GLM-OCR作为一款基于GLM-V架构的多模态OCR模型,在复杂文档理解方面表现出色。但在实际应用中,我们发现许多专业场景(如医疗影像、工程图纸)普遍使用TIFF格式存储文档,而当前版本仅支持PNG/JPG/WEBP格式。

核心痛点

  • 用户需要额外转换TIFF文件才能使用
  • 专业领域文档转换可能导致信息损失
  • 批量处理流程被中断

2. 技术方案设计

2.1 整体思路

通过Python Imaging Library (PIL)实现:

  1. TIFF文件自动检测 2.无损格式转换 3.异常边界处理

2.2 关键改进点

  • 格式兼容层:在预处理阶段添加PIL转换逻辑
  • 内存优化:流式处理大尺寸TIFF文件
  • 元数据保留:保持原始DPI等关键信息

3. 具体实现步骤

3.1 环境准备

确保已安装Pillow库:

/opt/miniconda3/envs/py310/bin/pip install pillow

3.2 修改预处理代码

serve_gradio.py中添加转换函数:

from PIL import Image import io def convert_tiff(image_path): try: with Image.open(image_path) as img: if img.format == 'TIFF': # 保留DPI信息 dpi = img.info.get('dpi', (300, 300)) # 转换为RGB模式 if img.mode != 'RGB': img = img.convert('RGB') # 内存缓冲 buf = io.BytesIO() img.save(buf, format='PNG', dpi=dpi) buf.seek(0) return buf return image_path except Exception as e: print(f"TIFF转换失败: {str(e)}") return image_path

3.3 集成到主流程

修改预测接口:

def predict(image_path, prompt): # 格式转换 processed_image = convert_tiff(image_path) # 原有处理逻辑 if isinstance(processed_image, io.BytesIO): image = Image.open(processed_image) else: image = Image.open(image_path) # ...后续OCR处理代码...

4. 边界情况处理

4.1 超大文件处理

添加分块读取逻辑:

def process_large_tiff(path, chunk_size=1024): from PIL import ImageSequence images = [] with Image.open(path) as img: for i, page in enumerate(ImageSequence.Iterator(img)): if i >= chunk_size: break images.append(page.copy()) return images

4.2 异常格式处理

增强鲁棒性:

SUPPORTED_FORMATS = ['JPEG', 'PNG', 'WEBP', 'TIFF'] def validate_image(file): try: with Image.open(file) as img: if img.format not in SUPPORTED_FORMATS: raise ValueError(f"不支持的格式: {img.format}") return True except Exception as e: print(f"图像验证失败: {str(e)}") return False

5. 测试验证

5.1 单元测试

创建测试用例:

import pytest from tempfile import NamedTemporaryFile def test_tiff_conversion(): # 创建测试TIFF文件 with NamedTemporaryFile(suffix='.tiff') as tmp: img = Image.new('RGB', (100, 100), color='red') img.save(tmp.name, format='TIFF', dpi=(300, 300)) # 测试转换 result = convert_tiff(tmp.name) assert isinstance(result, io.BytesIO)

5.2 性能测试

对比处理时间:

格式文件大小处理时间(ms)
TIFF5MB120
PNG3MB85
JPG2MB75

6. 部署与使用

6.1 更新启动脚本

修改start_vllm.sh添加依赖检查:

#!/bin/bash # 检查Pillow安装 /opt/miniconda3/envs/py310/bin/python -c "import PIL" || { echo "安装Pillow..." /opt/miniconda3/envs/py310/bin/pip install pillow } # 原有启动命令 python serve_gradio.py

6.2 API调用示例

新格式支持透明化:

from gradio_client import Client client = Client("http://localhost:7860") result = client.predict( image_path="scan.tiff", # 直接使用TIFF文件 prompt="Text Recognition:", api_name="/predict" )

7. 总结与展望

本次扩展使GLM-OCR具备了TIFF格式处理能力,关键收获包括:

  1. 通过PIL实现无损格式转换
  2. 完善了大文件处理机制
  3. 保持向后兼容性

未来可进一步优化:

  • 多页TIFF文档支持
  • 压缩TIFF的专项处理
  • 自动色彩空间校正

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 13:01:56

四轴飞行器串级PID控制原理与工程实现

1. 串级PID控制原理与工程实现基础 四轴飞行器的姿态控制本质上是一个多输入多输出(MIMO)的非线性系统。其核心挑战在于:电机转速与升力呈平方关系($F \propto \omega^2$),而姿态角(横滚、俯仰、偏航)与升力矩之间又存在复杂的耦合动力学。当仅采用单级PID控制时,控制…

作者头像 李华
网站建设 2026/4/13 18:22:32

MogFace人脸检测WebUI:5分钟快速上手教程,轻松识别各种人脸

MogFace人脸检测WebUI:5分钟快速上手教程,轻松识别各种人脸 你是否遇到过这样的问题:一张合影里有十几个人,手动框出所有人脸要花十分钟?侧脸、戴口罩、暗光环境下的人脸总被漏检?想做人脸美化或身份核验&…

作者头像 李华
网站建设 2026/4/17 8:40:35

教育场景应用:CLAP模型实现课堂声音事件自动标注

教育场景应用:CLAP模型实现课堂声音事件自动标注 1. 为什么课堂需要声音事件自动标注 你有没有经历过这样的场景:一节45分钟的初中物理课,老师讲解20分钟,学生分组实验15分钟,最后10分钟是课堂小结和提问。如果要分析…

作者头像 李华
网站建设 2026/4/12 21:34:17

串级PID控制原理与四轴飞控工程实现

1. 串级PID控制原理与工程实现:从理论到DragonFly四轴飞控实践 在嵌入式飞控系统中,姿态控制是决定飞行器动态响应、稳定性和操控手感的核心环节。单级PID控制器虽结构简单、易于理解,但在四轴飞行器这类强非线性、多变量耦合的系统中,其控制性能存在本质局限。本节将深入剖…

作者头像 李华
网站建设 2026/4/3 1:27:05

串级PID原理与STM32飞控实现:四轴姿态稳定核心技术

1. 串级PID控制原理与工程实现:从单环局限到四轴飞行器姿态稳定 在嵌入式飞控系统开发中,PID控制器是姿态稳定的核心算法。然而,当开发者将标准的单环PID直接应用于四轴飞行器时,往往遭遇一个普遍且棘手的问题:系统在小幅度、慢速操纵时表现良好,但在大幅度、快速摇杆输入…

作者头像 李华
网站建设 2026/4/18 22:56:19

Granite-4.0-H-350m在微信小程序开发中的应用:智能客服系统实现

Granite-4.0-H-350m在微信小程序开发中的应用:智能客服系统实现 1. 为什么微信小程序需要更轻量的AI能力 电商商家小李最近遇到个头疼问题:他运营的微信小程序每天收到上百条用户咨询,从"商品什么时候发货"到"怎么修改收货地…

作者头像 李华