在数字化时代,光学字符识别(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编辑器整理大模型输出,结果如下:
大模型很好的将药品说明书中的信息整理出来,并做好整理。
接下来我们在看一个例子。
这是一本Python程序设计的封面,我们使用大模型对其进行OCR识别。识别结果如下:
可以看到,大模型不仅能精准的识别文字内容,还可以对识别结果进行归类,例如 微课视频 教学大纲 教案 PPT 答案等,归类到了 本书配套资源 中,这是传统的OCR识别无法具备的能力。
大模型OCR识别代码如下:
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)
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。