本地部署大模型实现OCR识别

目录

OCR识别的难点

1.图像质量

2.复杂的文本布局

3.字体的多样性

本地大模型进行OCR识别


在数字化时代,光学字符识别(OCR)技术已成为信息处理和文档管理的重要工具。近年来,随着大模型技术的兴起,OCR技术迎来了新的发展机遇。本文将探讨大模型在OCR识别中的应用,分析其技术优势、行业实践以及未来趋势。

OCR识别的难点

OCR尽管该技术已经有了很大的进步,但在实际应用中仍然存在一些难点和挑战。

1.图像质量

图像质量是影响OCR效果的重要因素,包括低分辨率、模糊不清以及噪音等问题都会导致字符细节丢失或干扰,从而影响识别准确性。

OCR技术依赖于从图像中提取清晰、可辨认的字符信息,因此图像的质量会直接影响到识别结果的准确性。首先,图像的分辨率决定了每个字符在图像中的像素数量。如果分辨率过低,字符细节可能丢失,导致OCR引擎难以正确分辨字符形状,进而产生错误的识别结果;相反,高分辨率图像通常能提供更丰富的字符细节,有助于提高识别准确率。其次,模糊的图像可能是由于扫描或拍摄时焦距不准确、运动抖动等原因造成。这种模糊使得字符边缘变得不清晰,降低了字符与背景之间的对比度,增加了OCR引擎误读的可能性,在极端情况下,OCR可能完全无法识别某些字符。

此外,图像上的噪音如斑点、划痕或者其他形式的干扰可以被误认为是字符的一部分,或者掩盖实际存在的字符,导致OCR引擎产生错误的识别结果。去除噪音是图像预处理的一个重要步骤,能够显著提升OCR性能。文字和背景之间对比度不足也会使OCR难以区分字符和非字符区域,例如,在浅色纸张上使用淡色墨水书写或打印的文字,或是彩色文本颜色对比度低的情况下,都会降低OCR系统的识别效率。同时,当文档在扫描或拍照时发生倾斜或变形,文字行可能会扭曲,字符间距也会受到影响,这种几何失真可能导致OCR引擎错误地分割字符或单词,甚至完全误解字符结构,严重影响识别效果。

2.复杂的文本布局

复杂的排版或非标准的文档结构会显著增加识别的难度。首先,多方向排列的文本是一个常见问题。当文档中包含横向和纵向的文字混合时,OCR引擎可能难以正确地分割和识别这些不同方向的文本行。这不仅增加了处理时间,还可能导致识别错误,因为系统需要准确判断每个字符的方向。

其次,表格、图表与文本的混合排版也给OCR带来了挑战。表格中的文字通常被线条和单元格分隔开来,而图表则可能覆盖或嵌入文本之中。这种情况下,OCR必须能够准确地区分表格结构和其中的文字内容,并且理解图表与文本之间的关系。如果OCR系统无法正确解析这些元素,就容易产生错位的文本提取,甚至遗漏重要信息。

此外,无序分布或重叠的文本同样影响OCR的准确性。在一些文档中,文本不是按照传统的从左到右、从上到下的顺序排列,而是以不规则的方式散布在整个页面上;还有些文档中存在文本重叠的情况。对于这样的文档,OCR引擎需要具备高级的分析能力来确定正确的阅读顺序,并且要能够处理部分遮挡的问题。否则,输出的结果可能会是混乱的字符序列,而不是连贯的句子或段落。

3.字体的多样性

字体的多样性是OCR面临的一个显著难题。每一种字体都有其独特的形状和结构,某些字体可能具有复杂的装饰或连笔,这些特征使得OCR在解析时容易产生误判。例如,手写体或艺术字体由于其不规则性和变化性较大,对于基于印刷体训练的OCR系统来说尤其难以识别。即使是在标准的印刷字体中,也存在许多细微差异,这要求OCR引擎具备高度的灵活性以适应不同字体的识别需求。

本地大模型进行OCR识别

使用大模型进行OCR识别能够很好的解决OCR识别的难点。

我们首先来展示一下大模型进行OCR识别的效果。

这是一张药品说明书,我们使用大模型对其进行OCR识别。

将图片输入至大模型中,并给出提示词"请对图中所有的文字进行识别,并整理成表格",模型推理结果如下:

我们使用Markdown编辑器整理大模型输出,结果如下:

序号 项目 内容
1 通用名称 复方黄柏液涂剂
2 汉语拼音 Fufang Huangbaiye Tuji
3 成份 连翘、黄柏、金银花、蒲公英、蜈蚣
4 性状 本品为红棕色液体
5 药理作用 本品有抗革兰氏阳性菌,消炎和促进伤口愈合的作用,还能增强单核巨噬细胞的吞噬功能,提高非特异性免疫力的作用。
6 功能主治 清热解毒,消肿祛腐。用于疮疡溃后,伤口感染,属阳证者。
7 规格 每1ml相当于饮片0.2g。
8 用法用量 外用。浸泡纱布条外敷于感染伤口内,或破溃的脓肿内。若溃疡较深,可用直径0.5~1.0cm的无菌胶管,插人溃疡深部,以注射器抽取本品进行冲洗。用量一般10~20ml,每日1次。或遵医嘱。
9 不良反应 尚不明确。
10 禁忌 尚不明确。
11 注意事项 (1) 本品供外用,不可内服; (2) 使用本品前应注意按常规换药法清洁或清创病灶; (3) 开瓶后,不宜久存; (4) 孕妇慎用; (5) 本品性状发生改变时禁止使用; (6) 对本品过敏者禁用,过敏体质慎用; (7) 如正在使用其他药物请遵医嘱; (8) 请将本品放在儿童不能接触的地方; (9) 本品久贮略有沉淀,可摇匀后使用。
12 贮藏 密封。
13 包装 玻璃瓶瓶装:20ml/瓶;20ml/瓶×3瓶;20ml/瓶×5瓶;20ml/瓶×6瓶;100ml/瓶;120ml/瓶;150ml/瓶。
14 有效期 36个月
15 执行标准 《中华人民共和国药典》(2015年版一部)
16 批准文号 国药准字Z10950097
17 生产企业 山东汉方制药有限公司

大模型很好的将药品说明书中的信息整理出来,并做好整理。

接下来我们在看一个例子。

这是一本Python程序设计的封面,我们使用大模型对其进行OCR识别。识别结果如下:

书名 Python程序设计 项目化教程
系列 计算机类技能型理实一体化新形态系列
版本 微课视频版
主编 刘衍琦 杨斌 田华
副主编 陈守森 许强
本书配套资源 微课视频 教学大纲 教案 PPT 答案等
出版社 清华大学出版社

可以看到,大模型不仅能精准的识别文字内容,还可以对识别结果进行归类,例如 微课视频 教学大纲 教案 PPT 答案等,归类到了 本书配套资源 中,这是传统的OCR识别无法具备的能力。

大模型OCR识别代码如下:

python 复制代码
from transformers import Qwen2VLForConditionalGeneration, AutoTokenizer, AutoProcessor
from qwen_vl_utils import process_vision_info
import torch
import warnings
warnings.filterwarnings("ignore")


model = Qwen2VLForConditionalGeneration.from_pretrained(
    "Qwen2-VL-2B",
    torch_dtype=torch.bfloat16,
    device_map="auto",
)
processor = AutoProcessor.from_pretrained("Qwen2-VL-2B")
messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "image",
                "image": "img.png",
            },
            {"type": "text", "text": "请对图中所有的文字进行识别,并将识别结果整理成表格"},
        ],
    }
]

# Preparation for inference
text = processor.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True
)
image_inputs, video_inputs = process_vision_info(messages)
inputs = processor(
    text=[text],
    images=image_inputs,
    videos=video_inputs,
    padding=True,
    return_tensors="pt",
)
inputs = inputs.to("cuda")

# Inference: Generation of the output
generated_ids = model.generate(**inputs, max_new_tokens=1024)
generated_ids_trimmed = [
    out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
]
output_text = processor.batch_decode(
    generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
)
print(output_text)
相关推荐
XianxinMao41 分钟前
AI视频生成技术:Sora的突破与挑战
人工智能
衫水1 小时前
在Windows系统中本地部署属于自己的大语言模型(Ollama + open-webui + deepseek-r1)
人工智能·windows·语言模型
西猫雷婶2 小时前
神经网络|(一)加权平均法,感知机和神经元
人工智能·深度学习·神经网络
智识世界Intelligence2 小时前
探索与创新:DeepSeek R1与Ollama在深度研究中的应用
经验分享·深度学习·神经网络·自然语言处理·学习方法
弥树子6 小时前
TensorFlow实现逻辑回归模型
人工智能·tensorflow·逻辑回归
迪娜学姐6 小时前
DeepSeek学术写作测评第二弹:数据分析、图表解读,效果怎么样?
人工智能·chatgpt·数据分析
明明真系叻7 小时前
2025.1.26机器学习笔记:C-RNN-GAN文献阅读
人工智能·笔记·深度学习·机器学习·生成对抗网络·1024程序员节
PPT百科8 小时前
参照和谐色调为PPT图形设置统一格式的要点
人工智能·经验分享·powerpoint·ppt
有小肚子的三眼桥墩9 小时前
从零安装 LLaMA-Factory 微调 Qwen 大模型成功及所有的坑
人工智能·llama·llama-factory
Always_Shine9 小时前
llama-2-7b权重文件转hf格式及模型使用
深度学习·神经网络·自然语言处理·大模型·llama2