本地部署Qwen2/2.5-VL和书生InternVL-2/3进行批量OCR

qwen-vl 实现OCR的测试 文本识别,也称为光学字符识别 (OCR),可以将印刷文本或手写文本转换为易于编辑、搜索和分析的数字格式。它涉及分析文本图像并识别其中包含的字符和单词。深度学习彻底改变了文本识别,显著提升了准确性和性能。目前已有多种基于深度学习的文本识别方法。使用深度学习进行文本识别卷积神经网络 (CNN):CNN 通常用于基于图像的文本识别。输入图像由卷积层驱动,提取特征并学习文本表征。然后,CNN 的输出被传递到循环神经网络 (RNN) 进行进一步处理和文本识别。 阅读详情
AI摘要

本文介绍本地部署Qwen2/2.5-VL和书生InternVL-2/3进行批量OCR。Qwen2.5基于Qwen2用更大更好数据集训练,全系用GQA技术。文中给出模型下载链接及OCR调用代码。InternVL系列打破传统构建模式,InternVL3采用原生多模态预训练范式,介绍其架构、部署及OCR调用方法。

Qwen2&2.5

概述

阿里推出的Qwen2.5系列仍然是目前最火的BASE模型,相比于Qwen2系列,2.5只是使用了体量更大、质量更高的数据集继续训练得到的 Qwen2.5 系列模型。

Code:https://github.com/QwenLM

Qwen系列包括了5个尺寸的预训练和指令微调的模型,当时在开源的模型里一经推出就达到SOTA的水平。其中全系都使用了GQA(Group-Query Attention)技术,小模型使用了Tie Embedding(共享向量)技术。上下文长度都是基于32K的数据预训练然后拓展的,可以看到最长可以支持到128K。在推出的当时性能还是吊打其他大部分大模型的,尤其是多语言支持以及代码及数学能力显著提升,具体性能指标可以参考其文档。

OCR调用

为了对比两代Qwen模型的OCR能力,我们通常需要设计prompt来导入图片或者pdf进行批量识别。而在批量识别的时候我遇到了内存溢出问题,在修复后我将使用的prompt和代码提供给大家进行参考,本文使用的模型采用7B(因为3090只能跑7B),为了一致性,本文采用的四个模型prompt都是相同的。模型下载的链接如下:

Qwen2.5模型:https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct

Qwen2模型:https://huggingface.co/Qwen/Qwen2-VL-7B-Instruct

由于huggingface内网无法访问,因此需要用国内的代理网站进行下载,代码如下:

import os
# // 设置环境变量
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
# // 下载模型 Qwen2.5 其他模型同理 
os.system('huggingface-cli download Qwen/Qwen2.5-VL-7B-Instruct \#连接
  --local-dir ./Qwen2.5-VL-7B-Instruct \#本地目录
  --local-dir-use-symlinks False')
import dashscope
import json
import os
from tqdm import tqdm
from transformers import set_seed
import os

from transformers import Qwen2_5VLForConditionalGeneration, AutoTokenizer, AutoProcessor
from qwen_vl_utils import process_vision_info
from modelscope import snapshot_download
import torch

import time
import gc
import sys
os.environ['PYTORCH_CUDA_ALLOC_CONF'] = 'expandable_segments:True'

def clean_memory():
    """显存清理函数"""
    torch.cuda.synchronize()  # 等待所有CUDA操作完成
    torch.cuda.empty_cache()
    gc.collect()
    time.sleep(1)  # 增加清理间隔

    
def set_seed(seed):
    import random
    import numpy as np
    import torch
    random.seed(seed)
    np.random.seed(seed)
    torch.manual_seed(seed)
    torch.backends.cudnn.benchmark = False
    torch.backends.cudnn.deterministic = True
    torch.cuda.manual_seed(seed)




def load_model():
    """带内存优化的模型加载"""
    model_dir = "/Qwen2.5-VL-7B-Instruct"#模型保存路径
    
    # 显存清理确保加载顺利
    clean_memory()
    
    model = AutoModelForVision2Seq.from_pretrained(
        model_dir,
        torch_dtype=torch.bfloat16,
        device_map="cuda:2",
        trust_remote_code=True
    )
    processor = AutoProcessor.from_pretrained(model_dir)
    return model, processor

# 初始化模型(全局加载一次)
model, processor = load_model()


# 设置输入和输出的基目录
input_dir = '/images'
output_dir = "/result/"

if not os.path.exists(output_dir):
    os.makedirs(output_dir)

# complex prompt
prompt = r'''You are an AI assistant specialized in converting PDF images to Markdown format. Please follow these instructions for the conversion:

        1. Text Processing:
        - Accurately recognize all text content in the PDF image without guessing or inferring.
        - Convert the recognized text into Markdown format.
        - Maintain the original document structure, including headings, paragraphs, lists, etc.

        2. Mathematical Formula Processing:
        - Convert all mathematical formulas to LaTeX format.
        - Enclose inline formulas with \( \). For example: This is an inline formula \( E = mc^2 \)
        - Enclose block formulas with \\[ \\]. For example: \[ \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} \]

        3. Table Processing:
        - Convert tables to HTML format.
        - Wrap the entire table with <table> and </table>.

        4. Figure Handling:
        - Ignore figures content in the PDF image. Do not attempt to describe or convert images.

        5. Output Format:
        - Ensure the output Markdown document has a clear structure with appropriate line breaks between elements.
        - For complex layouts, try to maintain the original document's structure and format as closely as possible.

        Please strictly follow these guidelines to ensure accuracy and consistency in the conversion. Your task is to accurately convert the content of the PDF image into Markdown format without adding any extra explanations or comments.
        '''

image_extensions = ('.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.webp')
current_time_1 = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(current_time_1)

def process_single_image(image_path, output_dir):
    """处理单个图像并自动清理内存"""
    # 初始化所有可能用到的变量
    inputs = None
    generated_ids = None
    generated_ids_trimmed = None
    output_text = None
    
    try:
        # 生成输出路径
        basename = os.path.splitext(os.path.basename(image_path))[0]
        markdown_file = os.path.join(output_dir, f"{basename}.md")
        
        if os.path.exists(markdown_file):
            # print(f"跳过已存在文件: {markdown_file}")
            return True

        # 构建输入数据
        messages = [{
            "role": "user",
            "content": [
                {"type": "image", "image": image_path, "max_pixels": 1080 * 1080},
                {"type": "text", "text": prompt}
            ]
        }]

        # 预处理
        text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
        image_inputs, video_inputs = process_vision_info(messages)
        
        # 使用显存上下文管理
        with torch.no_grad():
            inputs = processor(
                text=[text],
                images=image_inputs,
                videos=video_inputs,
                padding=True,
                return_tensors="pt"
            ).to("auto")

            # 生成输出
            set_seed(0)
            generated_ids = model.generate(
                **inputs, 
                max_new_tokens=1024,
                temperature=0.1,
                do_sample=False
            )

        # 后处理
        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
        )[0]

        # 保存结果
        with open(markdown_file, 'w', encoding='utf-8') as f:
            f.write(output_text)
        
        return True

    except Exception as e:
        print(f"处理 {image_path} 时发生错误: {str(e)}")
        return False
    finally:
        # 安全释放内存(带存在性检查)
        for var in [inputs, generated_ids, generated_ids_trimmed, output_text]:
            if var is not None:
                del var
        clean_memory()


if __name__ == "__main__":
    # 创建输出目录
    os.makedirs(output_dir, exist_ok=True)
    
    # 获取所有需要处理的文件
    file_list = []
    for root, _, files in os.walk(input_dir):
        for name in files:
            if any(name.lower().endswith(ext) for ext in image_extensions):
                file_list.append(os.path.join(root, name))
    
    print(f"开始处理 {len(file_list)} 个文件")
    start_time = time.time()
    
    # 带进度条的遍历处理
    for image_path in tqdm(file_list, desc="处理进度"):
        success = False
        retry = 0
        while not success and retry < 3:  # 最多重试3次
            success = process_single_image(image_path, output_dir)
            if not success:
                retry += 1
                print(f"第 {retry} 次重试: {image_path}")
                time.sleep(2**retry)  # 指数退避重试
                
        if not success:
            print(f"!! 文件处理失败: {image_path}")

    # 计时信息
    end_time = time.time()
    print(f"\n开始时间: {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(start_time))}")
    print(f"结束时间: {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(end_time))}")
    print(f"总耗时: {end_time - start_time:.2f} 秒")

由于Qwen2和Qwen2.5的模型调用并不相同,因此模型调用和import部分需要改为:

from transformers import Qwen2VLForConditionalGeneration, AutoTokenizer, AutoProcessor
model = Qwen2VLForConditionalGeneration.from_pretrained(
        model_dir, 
        torch_dtype=torch.bfloat16,
        device_map="auto",
        attn_implementation="flash_attention_2"
    )

书生大模型InternVL系列

概述

当前主流的 MLLMs——无论开源还是闭源——大多仍沿袭一种“后处理”的构建模式:先训练一个纯文本大语言模型(LLM),再通过复杂的、往往是多阶段的流程将其适配为能处理视觉输入的 MLLM。这种模式虽然有效,却带来了模态间对齐的固有挑战,并通常需要大量特定领域的辅助数据以及精细的参数冻结或多阶段微调策略,资源密集且效率有限。

正是在这样的背景下,InternVL 系列模型应运而生,并不断在多模态能力的探索上迈进。如今,研究人员带来了该系列的最新一代:InternVL3。它打破了传统的“后处理”藩篱,开创性地采用了原声多模态预训练范式,旨在从根本上提升模型的效率和性能。InternVL3 的目标不仅仅是追赶甚至超越现有的顶尖开源 MLLMs,更是剑指与领先的闭源商业模型同台竞技,同时秉持开放科学原则,推动下一代 MLLMs 的发展。

论文地址:https://arxiv.org/abs/2504.10479

Code:https://github.com/OpenGVLab/InternVL

InternVL3-8B:https://huggingface.co/OpenGVLab/InternVL3-8B

InternVL2-8B:https://huggingface.co/OpenGVLab/InternVL2-8B

数据集:https://huggingface.co/datasets/OpenGVLab/InternVL-Data

模型架构

InternVL3系列模型的架构延续了“ViT-MLP-LLM”范式,用随机初始化的MLP projector将全新增量预训练的InternViT与各种预训练的LLM(包括InternLM3和Qwen2.5)集成。

在模型推理方面,InternVL3应用了像素反混洗操作,将视觉标记数量减少到原来的四分之一,并采用动态分辨率策略,将图像划分为448×448像素的图块。从InternVL2.0开始,关键区别在于额外引入了对多图像和视频数据的支持。InternVL3还集成了可变视觉位置编码(V2PE),为视觉标记提供了更小、更灵活的位置增量,从而展现出更出色的长上下文理解能力。

在模型部署方面,InternVL3可以通过LMDeploy的api_server部署成OpenAI兼容API,用户只需安装lmdeploy>=0.7.3,然后使用相关命令即可完成部署。模型调用时,用户可以通过OpenAI的API接口,指定模型名称、消息内容等参数,获取模型的响应。

OCR调用

InternVl系列在上传并调用图片时有自己独特的逻辑,详情可以参照模型官网的介绍文档。这里直接放省流一键运行版代码,注意替换本地模型路径,下载方式和之前Qwen的huggingface下载方式相同:

from transformers import AutoTokenizer, AutoModel
import torch
import torchvision.transforms as T
import copy
import os
import json
import json
import numpy as np
from tqdm import tqdm
import random
import math
from PIL import Image

from torchvision.transforms.functional import InterpolationMode

IMAGENET_MEAN = (0.485, 0.456, 0.406)
IMAGENET_STD = (0.229, 0.224, 0.225)



def build_transform(input_size):
    MEAN, STD = IMAGENET_MEAN, IMAGENET_STD
    transform = T.Compose([
        T.Lambda(lambda img: img.convert('RGB') if img.mode != 'RGB' else img),
        T.Resize((input_size, input_size), interpolation=InterpolationMode.BICUBIC),
        T.ToTensor(),
        T.Normalize(mean=MEAN, std=STD)
    ])
    return transform


def find_closest_aspect_ratio(aspect_ratio, target_ratios, width, height, image_size):
    best_ratio_diff = float('inf')
    best_ratio = (1, 1)
    area = width * height
    for ratio in target_ratios:
        target_aspect_ratio = ratio[0] / ratio[1]
        ratio_diff = abs(aspect_ratio - target_aspect_ratio)
        if ratio_diff < best_ratio_diff:
            best_ratio_diff = ratio_diff
            best_ratio = ratio
        elif ratio_diff == best_ratio_diff:
            if area > 0.5 * image_size * image_size * ratio[0] * ratio[1]:
                best_ratio = ratio
    return best_ratio


def dynamic_preprocess(image, min_num=1, max_num=6, image_size=448, use_thumbnail=False):
    orig_width, orig_height = image.size
    aspect_ratio = orig_width / orig_height

    # calculate the existing image aspect ratio
    target_ratios = set(
        (i, j) for n in range(min_num, max_num + 1) for i in range(1, n + 1) for j in range(1, n + 1) if
        i * j <= max_num and i * j >= min_num)
    target_ratios = sorted(target_ratios, key=lambda x: x[0] * x[1])

    # find the closest aspect ratio to the target
    target_aspect_ratio = find_closest_aspect_ratio(
        aspect_ratio, target_ratios, orig_width, orig_height, image_size)

    # calculate the target width and height
    target_width = image_size * target_aspect_ratio[0]
    target_height = image_size * target_aspect_ratio[1]
    blocks = target_aspect_ratio[0] * target_aspect_ratio[1]

    # resize the image
    resized_img = image.resize((target_width, target_height))
    processed_images = []
    for i in range(blocks):
        box = (
            (i % (target_width // image_size)) * image_size,
            (i // (target_width // image_size)) * image_size,
            ((i % (target_width // image_size)) + 1) * image_size,
            ((i // (target_width // image_size)) + 1) * image_size
        )
        # split the image
        split_img = resized_img.crop(box)
        processed_images.append(split_img)
    assert len(processed_images) == blocks
    if use_thumbnail and len(processed_images) != 1:
        thumbnail_img = image.resize((image_size, image_size))
        processed_images.append(thumbnail_img)
    return processed_images


def load_image(image_file, input_size=448, max_num=6):
    image = Image.open(image_file).convert('RGB')
    transform = build_transform(input_size=input_size)
    images = dynamic_preprocess(image, image_size=input_size, use_thumbnail=True, max_num=max_num)
    pixel_values = [transform(image) for image in images]
    pixel_values = torch.stack(pixel_values)
    return pixel_values

if __name__ == "__main__":
    random.seed(0)
    path = "./InternVL2-8B"#模型路径

    img_path = "/images"#图片路径
    save_path = "/result"#结果路径

    os.makedirs(save_path, exist_ok=True)  # 新增目录创建语句
    
    model = AutoModel.from_pretrained(
        path,
        torch_dtype=torch.bfloat16,
        low_cpu_mem_usage=True,
        use_flash_attn=True,
        trust_remote_code=True).eval().cuda()

    tokenizer = AutoTokenizer.from_pretrained(path, trust_remote_code=True)
 
    generation_config = dict(max_new_tokens=4096, do_sample=False, temperature=0.0, no_repeat_ngram_size=20)

    prompt = r'''You are an AI assistant specialized in converting PDF images to Markdown format. Please follow these instructions for the conversion:

        1. Text Processing:
        - Accurately recognize all text content in the PDF image without guessing or inferring.
        - Convert the recognized text into Markdown format.
        - Maintain the original document structure, including headings, paragraphs, lists, etc.

        2. Mathematical Formula Processing:
        - Convert all mathematical formulas to LaTeX format.
        - Enclose inline formulas with \( \). For example: This is an inline formula \( E = mc^2 \)
        - Enclose block formulas with \\[ \\]. For example: \[ \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} \]

        3. Table Processing:
        - Convert tables to HTML format.
        - Wrap the entire table with <table> and </table>.

        4. Figure Handling:
        - Ignore figures content in the PDF image. Do not attempt to describe or convert images.

        5. Output Format:
        - Ensure the output Markdown document has a clear structure with appropriate line breaks between elements.
        - For complex layouts, try to maintain the original document's structure and format as closely as possible.

        Please strictly follow these guidelines to ensure accuracy and consistency in the conversion. Your task is to accurately convert the content of the PDF image into Markdown format without adding any extra explanations or comments.
        '''
    question = f'<image>\n{prompt}'

    for img_name in tqdm(os.listdir(img_path)):
        # 清洗文件名并检查扩展名
        img_name_clean = img_name.strip()
        if not (img_name_clean.endswith('.jpg') or img_name_clean.endswith('.png')):
            continue
        
        # 构造输出路径并检查是否存在
        md_filename = img_name_clean[:-4] + '.md'
        md_path = os.path.join(save_path, md_filename)
        if os.path.exists(md_path):
            print(f"Skipping {img_name} as {md_filename} already exists.")
            continue
        
        # 处理图像
        try:
            img_path_tmp = os.path.join(img_path, img_name)  # 使用原始文件名访问文件
            pixel_values = load_image(img_path_tmp, max_num=6).to(torch.bfloat16).cuda()
            response = model.chat(tokenizer, pixel_values, question, generation_config)
            
            # 保存结果
            with open(md_path, 'w', encoding='utf-8') as output_file:
                output_file.write(response)
        except Exception as e:
            print(f"Error processing {img_name}: {str(e)}")
            continue

使用 lmdeploy 部署 internlm/internlm2_5-7b-chat 阅读详情

相关推荐

主流开源OCR模型实战评测:从PaddleOCR到Qwen-OCR

本文对主流开源OCR模型进行了实战评测,包括PaddleOCR、EasyOCR、Qwen-OCR、DeepSeek-OCR和RapidOCR。通过详细的技术对比和性能测试,分析了各模型在精度、速度、显存占用等方面的表现,并提供了针对不同业务场景的选型建议和优化技巧,帮助开发者选择最适合的OCR解决方案。

weixin_29045001的博客 399

Qwen-OCR:开源OCR技术的演进与全面分析

《Qwen-OCR技术全景分析》摘要:阿里巴巴达摩院开发的Qwen-OCR开源系统历经6年发展,从电商场景专用工具演进为支持多模态理解的通用OCR平台。技术分析显示其在中文混合排版(准确率97.5%)、国产硬件适配及阿里云集成方面具有显著优势,金融票据识别准确率达98.7%。部署支持从树莓派到云集群的多种方案,三年TCO较Google Vision API节省60%。作为国内首个完整开源的企业级OCR系统,其8000+GitHub星和200+贡献者形成的生态,正在政务数字化等领域提供国产替代方案,未来将向3

AngelCryToo的专栏 2107

基于Spring Boot在线远程考试系统的设计与实现

结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。目前的信息时代,对信息的管理趋于高效化,便捷化,这也是计算机大力普及所带来的便利,此程序软件在设备选用上,依靠的是比较大众的电脑设备,对电脑的配置没有过多要求,一般学校的计算机机房的电脑都可以满足程序开发需求,另外,开发出此款程序,让信息处理变得高效率,其所带来的高效益是远超程序开发的低成本的,因此程序开发的资金投入是可以忽略不计的。

ITbiyesheji的博客 1215

部署InternVL3-8B

2、在下载前,请先通过如下命令安装ModelScope。3、下载单个文件到指定本地文件夹(以下载。到当前路径下“models”目录为例)

m0_60657960的博客 1924

vnpy_ctp源码下载后转变为python可用的处理过程

vnpy_ctp源码下载后在window中编译使用

m0_37967652的博客 3327

LLM之RAG实战(五十四)| 复杂文档处理RAG框架:Ragflow

RAGFlow 是一种结合了检索增强(Retrieval-Augmented Generation,RAG)与流程控制(Flow)的人工智能技术架构。它通过检索外部知识库中的信息,结合自然语言生成技术,为用户提供更准确、更丰富的回答。同时,它还引入了流程控制机制,能够根据任务需求动态调整信息检索和生成的流程,从而更好地完成复杂的任务。RAGFlow 的核心优势在于将检索和生成相结合,打破了传统生成模型仅依赖内部参数进行文本生成的局限。

wshzd的博客 1067

VLMEvalKit 评测实践:InternVL2 VS Qwen2VL

多模态技术的突破,正在改变我们理解和交互世界的方式。无论是强大的感知能力、复杂的推理分析,还是图文融合的创新应用,InternVL2 与 Qwen2-VL 展现了大模型的无限可能。

m0_55303420的博客 4538

【保姆级教程】不到一元32位芯片 DIY迷你时钟

基于不到一元的CH32V003F4P9芯片制作的迷你多功能时钟。

twen51的博客 1814

InternVL2 VS Qwen2-VL,多模态大模型评测实践

InternVL2是由上海人工智能实验室 OpenGVLab 发布的一款多模态大模型,其中文名称为“书生·万象该模型在多学科问答(MMMU)任务上表现出色,成为国内首个在该任务上性能突破60的模型,被誉为开源多模态大模型性能的新标杆。InternVL2官方性能评测结果,来源:https://github.com/OpenGVLab/InternVLQwen2-VL是阿里巴巴达摩院开源的视觉多模态 AI 模型,具备高级图像和视频理解能力。

m0_59235245的博客 6014

Oracle EBS 寄销/VMI(1)-->基础设置

名词解释:     BPA:一揽子采购协议     BPR:一揽子发放     SR:来源补充规则     ASL:合格供应商列表     VMI: 供应商管理库存     寄售(Consignment)是把货物放在客户那里,客户要用的时候才付款的库存,一般是指卖方把

陈显平的专栏-Oracle EBS 1万+

一台NAS两个系统:飞牛nas上完美运行群晖DSM?(飞牛nas+群晖nas套娃安装实操)

想在飞牛NAS上体验群晖DSM系统?💡 本文详细记录了飞牛nas上部署群晖的完整过程,从镜像转换到系统安装,每一步都有详细说明 🖥️,让你在不增加硬件成本的情况下,轻松实现一套硬件、多种系统的灵活部署 ✅

XiaoqiangClub的博客 2370

Qwen3-VL-2B与InternVL对比:2B级视觉模型谁更强?

本文介绍了基于星图GPU平台自动化部署Qwen/Qwen3-VL-2B-Instruct视觉理解机器人镜像的实践方法,该模型在OCR文字识别与图文问答场景中表现优异,特别适用于文档分析、表格提取等AI应用开发,助力轻量级多模态系统快速落地。

weixin_42561464的博客 1085

Python爬虫实战:逆向解析天猫商品详情API,精准捕获规格、SKU与促销活动

及浏览器开发者工具),绕过前端渲染的复杂性,直接逆向分析并调用其内部数据接口,从而高效、稳定地抓取商品的关键信息,包括商品规格、多维度SKU信息以及复杂的促销活动。print(f"SKU ID: {sku.sku_id}, 价格: ¥{sku.price}, 库存: {sku.stock}, 规格: {sku.props}")当你访问一个商品链接时,浏览器首先会加载一个几乎为空的HTML骨架,然后通过执行大量的JavaScript代码,向后台服务器发起多个异步请求,最终将获取到的数据填充到页面中。

2201_76125261的博客 1129

实战对比:Qwen2.5-VL与InternVL3本地部署下的批量文档OCR效率与精度

本文对比了Qwen2.5-VL与InternVL3在本地部署下的批量文档OCR效率与精度。Qwen2.5-VL在数学公式识别和批量处理速度上表现优异,而InternVL3在图文混排和复杂表格还原方面更具优势。文章提供了详细的部署教程、性能测试数据及优化建议,帮助开发者根据实际需求选择合适的大模型。

weixin_29061531的博客 151

人像抠图 + OpenGL ES 还能这样玩?没想到吧(附带源码)

OpenGL ES 利用抠图算法实现人像留色。

字节流动 3万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Qwen3-VL-2B与InternVL2对比:长上下文处理能力评测

本文介绍了基于星图GPU平台自动化部署Qwen3-VL-2B-Instruct镜像的实践方法。该平台支持高效集成与扩展,可快速构建多模态AI应用。Qwen3-VL-2B-Instruct在长文档理解、视频时间定位及OCR识别等任务中表现优异,适用于合同分析、教育视频导航和GUI自动化等场景,为开发者提供强大的长上下文处理能力支持。

weixin_30481539的博客 1016

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Qwen3-VL与InternVL对比:中文OCR准确率与部署便捷性评测

本文介绍了如何在星图GPU平台上一键自动化部署Qwen3-VL-2B-Instruct镜像,实现高效的中文OCR识别。该模型在复杂文档处理、表格识别和场景文字提取等应用中表现出色,尤其适用于文档数字化和图像文字识别任务,大幅提升自动化信息处理效率。

weixin_42499004的博客 356

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Qwen3-VL和InternVL2哪个更适合企业?双模型部署对比评测

本文介绍了如何在星图GPU平台上自动化部署Qwen3-VL-2B-Instruct镜像,快速构建视觉语言理解能力。该镜像支持对网页截图、PDF文档及产品演示视频等多模态输入进行精准解析与操作意图推断,典型应用于智能客服界面理解、工业文档自动化处理等企业场景。

weixin_42596011的博客 712

Qwen3-VL-2B与InternVL对比:轻量多模态模型选型建议

本文介绍了如何在星图GPU平台自动化部署Qwen/Qwen3-VL-2B-Instruct视觉理解机器人镜像,实现高效的视觉理解任务。该镜像支持图像描述、OCR识别和视觉问答等场景,特别适用于电商商品识别和文档处理,帮助用户快速构建轻量级多模态AI应用。

BlackStone33的博客 1030

多模态大模型:视觉模型与LLM的结合之路三:InternVL-v1.5、Qwen2VL

相较于之前的工作,本文的主要贡献在于将大VIT、长img_emb和动态长宽比引入了多模态大模型并扩充了训练数据集。对于富文本图片,其包含的信息量较大,此前使用的小VIT,短img_emb可能无法承载如此多的信息,大VIT,长img_emb让internVL-V1.5拥有了理解富文本图片的潜力扩充的训练数据集让internVL-V1.5拥有了理解富文本图片的能力动态长宽比的引入则让模型更好的处理极端长宽比的图片(如宣传海报),并且避免了图像resize导致的形变问题。

2401_84495872的博客 1699

【书生实战营】- L2G4000 InternVL 多模态模型部署微调实践

InternVL多模态部署微调实践

ffffflk的博客 2494

Qwen3-VL与InternVL2-8B对比:GUI操作任务准确率实测

本文介绍了基于星图GPU平台自动化部署Qwen3-VL-2B-Instruct镜像的实践,该模型在GUI操作任务中表现出色,可精准识别界面元素并生成可执行指令,适用于自动化测试、智能代理开发等场景,显著提升AI应用开发效率。

weixin_42284380的博客 893

【多模态大模型】Qwen-VL 系列多模态大模型详解:从 Qwen-VL 到 Qwen2.5-Omni 的全面解析

【多模态大模型】Qwen-VL 系列多模态大模型详解:从 Qwen-VL 到 Qwen2.5-Omni 的全面解析

weixin_43988131的博客 2643

Qwen3-VL-2B与InternVL对比:CPU推理延迟实测数据分享

本文介绍了如何在星图GPU平台上自动化部署Qwen/Qwen3-VL-2B-Instruct视觉理解机器人镜像,实现低延迟CPU端图文理解任务。用户可快速启用该模型处理商品图OCR识别、文档截图信息提取等典型场景,无需GPU即可获得稳定、精准的多模态推理能力。

weixin_42613360的博客 365

Qwen3-VL-2B和InternVL对比评测:复杂场景描述准确率PK

本文介绍了如何在星图GPU平台上自动化部署Qwen/Qwen3-VL-2B-Instruct视觉理解机器人镜像,高效支撑复杂图像的精准解析任务。该镜像特别适用于多语言会议纪要截图中的关键信息提取、技术图纸故障推理等高要求场景,显著提升企业文档处理与现场诊断的准确率与可靠性。

weixin_35756690的博客 349
上一篇: OCR开源API——MinerU批量调用下载方法
下一篇: 画中画论文调研(万字长文)
fdffsadf
博客等级 码龄6年 13粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值