微信扫码
与创始人交个朋友
我要投稿
在人工智能领域飞速发展的今天,多模态模型正逐渐成为整合视觉与文本数据的新标准。Phi-3-Vision-128K-Instruct 是这一趋势中的最新突破,作为目前最先进的多模态模型,它大大提升了人工智能在处理图像与文本方面的能力。该模型特别擅长文档提取、光学字符识别(OCR)和通用图像理解,彻底改变了我们解析 PDF、图表、表格等结构化或半结构化信息的方式。
本文将深入探讨 Phi-3-Vision-128K-Instruct 的核心技术,解析其架构、技术要求及使用注意事项,帮助您了解如何利用该模型简化文档提取、PDF 解析与 AI 数据分析等复杂任务。
Phi-3-Vision-128K-Instruct 是 Phi-3 系列模型的一员,专为多模态数据处理而设计,支持最长达 128,000 个词条的上下文长度。它结合了文本与视觉数据的处理能力,特别适合同时需要解析文本和图像的任务。该模型基于 5000 亿个训练词块的数据,包括高质量的合成数据和精心筛选的公开数据源,经过监督微调和偏好优化,使其能够为复杂的 AI 任务提供精确、可靠的解决方案。
Phi-3-Vision-128K-Instruct 拥有 42 亿个参数,架构由图像编码器、连接器、投影器及 Phi-3 Mini 语言模型组成,功能强大且适应性广泛。
该模型的核心应用场景包括:
要使用 Phi-3-Vision-128K-Instruct,首先需要配置您的开发环境,并确保安装以下库:
# 所需库
flash_attn==2.5.8
numpy==1.24.4
Pillow==10.3.0
Requests==2.31.0
torch==2.3.0
torchvision==0.18.0
transformers==4.40.2
接着,您可以通过以下命令安装 Hugging Face 转换器库的最新版本:
pip uninstall -y transformers && pip install git+https://github.com/huggingface/transformers
以下是一个 Python 示例,展示如何加载并使用该模型进行推理:
from PIL import Image
import requests
from transformers import AutoModelForCausalLM, AutoProcessor
class Phi3VisionModel:
def __init__(self, model_id="microsoft/Phi-3-vision-128k-instruct", device="cuda"):
self.model_id = model_id
self.device = device
self.model = self.load_model() # 加载模型
self.processor = self.load_processor() # 加载处理器
def load_model(self):
print("加载模型...")
return AutoModelForCausalLM.from_pretrained(
self.model_id,
device_map="auto",
torch_dtype="auto",
trust_remote_code=True,
_attn_implementation='flash_attention_2'
).to(self.device)
def load_processor(self):
print("加载处理器...")
return AutoProcessor.from_pretrained(self.model_id, trust_remote_code=True)
def predict(self, image_url, prompt):
image = Image.open(requests.get(image_url, stream=True).raw)
prompt_template = f"<|user|>\n<|image_1|>\n{prompt}<|end|>\n<|assistant|>\n"
inputs = self.processor(prompt_template, [image], return_tensors="pt").to(self.device)
generation_args = {
"max_new_tokens": 500,
"temperature": 0.7,
"do_sample": False
}
print("生成响应...")
output_ids = self.model.generate(**inputs, **generation_args)
output_ids = output_ids[:, inputs['input_ids'].shape[1]:]
response = self.processor.batch_decode(output_ids, skip_special_tokens=True)[0]
return response
phi_model = Phi3VisionModel()
image_url = "https://example.com/sample_image.png"
prompt = "Extract the data in json format."
response = phi_model.predict(image_url, prompt)
print("响应:", response)
以上代码简化了模型的加载和使用流程,便于快速集成。您可以通过 predict()
方法来根据图像和提示语进行推理。
为了展示 Phi-3-Vision-128K-Instruct 的 OCR 能力,我们使用了一些扫描身份证的实例进行测试。图像的质量和清晰度各不相同,以检验模型在不同场景下的表现。
该护照包括姓名、国籍、出生地、签发日期等关键信息,图像质量较高,背景干净,文字易于识别。
提取结果:
{
"Type/Type": "P",
"Country code/Code du pays": "UTO",
"Passport Number/N° de passeport": "L898902C3",
"Surname/Nom": "ERIKSSON",
"Given names/Prénoms": "ANNA MARIA",
"Nationality/Nationalité": "UTOPIAN",
"Date of Birth/Date de naissance": "12 AUGUST/AOUT 74",
"Personal No./N° personnel": "Z E 184226 B",
"Sex/Sexe": "F",
"Place of birth/Lieu de naissance": "ZENITH",
"Date of issue/Date de délivrance": "16 APR/AVR 07",
"Authority/Autorité": "PASSPORT OFFICE",
"Date of expiry/Date d'expiration": "15 APR/AVR 12",
"Holder's signature/Signature du titulaire": "anna maria eriksson",
"Passport/Passeport": "P<UTOERIKSSON<<ANNA<MARIA<<<<<<<<<<<<<<<<<<<<<<<L898902C36UT07408122F1204159ZE184226B<<<<10"
}
该护照图像清晰,字段包括护照号码、姓名、出生日期等。
提取结果:
Here's the extracted full data from the passport in JSON format:
{
"passport": {
"issuingCountry": "Netherlands",
"issuingAuthority": "Koninkrijk der Nederlanden",
"passportNumber": "SPEC12014",
"issuingDate": "09 MAR 2014",
"expiryDate": "09 MAR 2024",
"holder": {
"gender": "F",
"nationality": "Netherlands",
"placeOfBirth": "SPECIMEN",
"sex": "WF",
"firstNames": [
"Willem",
"Lieselotte"
]
},
"physicalDescription": {
"height": "1.75 m",
"hairColor": "gray",
"hairLength": "short"
},
"issuingOffice": "Burg. van Stad en Dorp",
"issuingDateAsInt": "14032014",
"expiryDateAsInt": "14032024",
"fieldsExtracted": [
{
"code": "NL",
"dateOfBirth": "10 MAR 1965",
"dateOfIssue": "09 MAR 2014",
"dateOfExpiry": "09 MAR 2024",
"firstNames": [
"Willem",
"Lieselotte"
],
"nationality": "Netherlands",
"passportNumber": "SPEC12014",
"placeOfBirth": "SPECIMEN",
"sex": "WF"
}
]
}
}
如果您想亲自体验 Phi-3-Vision-128K-Instruct 模型的强大功能,可以通过以下链接进行探索:在 Azure AI 平台上试用该模型[1]。借助此链接,您可以轻松测试模型的能力,尤其是其出色的 OCR 功能。
Phi-3-Vision-128K-Instruct 并不是普通的语言模型。它是一款强大的多模态模型,能够处理复杂的视觉和文本数据。经过全面训练,该模型已处理了多达 5000 亿个词组,涵盖了大量文本和图像数据。其架构巧妙地将语言模型与图像处理模块结合,打造了一个强大的系统,能够处理超过 128K 标记的上下文,轻松应对大规模的对话或文档处理任务。
该模型在高性能硬件环境中进行训练,例如 512 台 H100 GPU,利用闪存注意机制来提升内存使用效率,确保其在处理大规模任务时也能保持卓越的性能。训练过程中,模型结合了合成数据与严格过滤的真实世界数据,并且特别强化了数学、编码、常识推理等领域,使其在多样化应用场景中表现优异。
Phi-3-Vision-128K-Instruct 的性能已经通过多个基准测试评估,包括 ScienceQA、AI2D、MathVista 和 TextVQA。在涉及文本与视觉结合的任务中,该模型超越了许多现有模型,特别是在以下方面表现突出:
在 ChartQA 和 AI2D 基准测试中,该模型分别取得了 81.4% 和 76.7% 的优异成绩,展示了其在处理数据密集型文档方面的卓越能力。
对于企业和研究人员而言,文档提取和 OCR 技术至关重要。这项技术能将印刷或手写的文本转化为机器可读的格式,极大简化 PDF 解析、数据录入自动化、发票处理以及法律文档分析等工作流程。借助 Phi-3-Vision-128K-Instruct 这样的多模态 AI 模型,这些复杂任务都能变得更加高效和自动化。
无论您处理的是扫描文件、屏幕截图,还是拍摄的页面,该模型的多模态能力都可以实现数据的自动化提取,帮助企业提升生产效率,减少人工操作的需求。
尽管 Phi-3-Vision-128K-Instruct 功能强大,但在使用时仍需注意其局限性。开发人员应意识到潜在的语言偏见、刻板印象的固化以及可能出现的内容不准确等问题。对于涉及健康、法律咨询等高风险应用场景,务必对生成的内容进行额外的验证与过滤。
想要进一步扩展 Phi-3-Vision-128K-Instruct 的功能?我们提供支持微调的工具,并且可以借助 Phi-3 Cookbook[2] 手册,针对具体任务(如文档分类、增强 OCR 准确性以及专业图像理解)来微调模型,进一步提升其在特定领域的表现。
Phi-3-Vision-128K-Instruct 不仅是多模态人工智能领域的重大进步,更是文档提取、OCR 以及 AI 驱动的内容生成的革命性飞跃。通过深厚的训练基础、强大的架构和精心设计,该模型为开发人员在各领域带来了全新的数据处理方式。
未来,我们将继续探索如何处理各种类型的文档,并通过 AI 技术从不同的数据来源中提取出更具价值的洞见。
人工智能驱动的文档提取技术前景广阔,未来令人期待!
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-11-23
Pixtral Large:128K 上下文窗口 + 多模态融合,开启智能新视界!
2024-11-20
基于GPU的ANN检索
2024-11-20
打破文本边界:如何进行多模态RAG评估
2024-11-15
西湖大学&腾讯:一个多模态Web Agent的开源框架
2024-11-13
最复杂多智能体发布!百度推出“秒哒”和文心iRAG
2024-11-12
【RAG&多模态】多模态RAG-ColPali:使用视觉语言模型实现高效的文档检索
2024-11-11
开摆!谷歌AI视频上线!脚本、素材、剪片全稿定!
2024-11-11
文档OCR版式识别,兼顾速度与精度,YOLO当首选
2024-05-30
2024-09-12
2024-06-17
2024-08-06
2024-08-30
2024-04-21
2024-06-26
2024-07-07
2024-06-14
2024-07-21
2024-09-26
2024-09-26
2024-09-01
2024-07-15
2024-07-14
2024-07-10
2024-07-02
2024-06-29