当前位置: 首页 > news >正文

浏览器里直接跑本地大模型和OCR:PageAssist插件一键安装包

本文还有配套的精品资源,点击获取

简介:PageAssist是专为开发者设计的浏览器扩展,支持Chrome、Edge等Manifest V3浏览器,能在不联网前提下调用本地运行的AI模型(如Ollama托管的LLM、Hugging Face本地API)和OCR识别能力(基于Tesseract.js)。安装后即可在网页侧边栏打开交互界面,实时提交文本或截图进行推理与文字提取。插件内置完整功能模块:后台服务管理模型连接、设置页配置API地址与参数、模型拉取脚本(ollama-pull.js/hf-pull.js)简化部署、Web Worker封装的OCR核心(含tesseract-core-simd.js和英文训练数据eng-fast.traineddata.gz),确保识别高效且不阻塞页面。所有资源已打包为即装即用格式,包含多尺寸图标(16–128px)、国际化消息文件、CSS样式、字体文件(Arimo/KaTeX系列)及Path2D兼容补丁。全程数据不出设备,适合隐私敏感场景、离线开发测试或快速验证本地AI能力。

1. 项目概述:为什么要在浏览器里“塞进”一个本地大模型?

你有没有过这样的时刻:正在写一份技术文档,想快速把截图里的代码块转成可编辑文本,但又不想上传到某个在线OCR服务;或者调试一个本地部署的Ollama模型,每次都要切到命令行敲ollama run qwen:7b,再复制粘贴提示词,来回切换效率极低;又或者你在做教育类网页原型,需要实时对用户上传的PDF截图做摘要,但又不能把学生作业发到公有云API——这时候,PageAssist不是个“玩具插件”,而是你开发工作流里突然多出来的一只手,一只完全听你指挥、不联网、不传数据、不等响应的手。

PageAssist本质上是一个浏览器端的AI能力调度中枢。它不训练模型,也不托管服务,而是把浏览器变成一个轻量级AI终端:后台(background.js)持续监听本地模型服务是否就绪;侧边栏(sidepanel.html)提供直观交互界面,支持拖入图片、粘贴文本、选择网页区域;OCR识别由Web Worker在独立线程中调用tesseract-core-simd.js完成,全程不卡主页面;而大模型推理则通过fetch直连你本机运行的Ollama或Hugging Face Inference API服务(比如http://localhost:11434/api/chathttp://localhost:8000/v1/chat/completions)。整个链路没有中间代理,没有云端跳转,所有字节都在你的内存和CPU里流转。

关键词里提到的“PageAssist,本地大模型,浏览器OCR,Ollama插件,Tesseract集成”,其实对应着四个关键判断点:
-PageAssist是名字,更是定位——它不是通用AI助手,而是面向开发者(Developer-Grade)的辅助工具(Assistant),默认不预设任何模型,一切配置由你掌控;
-本地大模型意味着你必须先在本机跑起来一个兼容OpenAI API格式的服务,Ollama是最省事的选择(ollama serve后自动暴露标准接口),但绝不限于此,只要返回结构是{choices:[{message:{content:"..."}}]},就能接;
-浏览器OCR不是调用某个云OCR接口,而是把Tesseract.js的SIMD加速版核心(tesseract-core-simd.js)完整打包进扩展,配合压缩过的英文训练数据(eng-fast.traineddata.gz),实测在M1 Mac上识别一张1080p截图平均耗时1.8秒,比纯JS版快3倍以上;
-Ollama插件这个说法容易误导——PageAssist本身不是Ollama的插件,而是Ollama的“浏览器客户端”。它甚至不需要Ollama:如果你用Text Generation WebUI启动了本地LLM,改个URL就能无缝切换;
-Tesseract集成的难点从来不在调用,而在字体、语言包、Path2D兼容性。PageAssist直接把Arimo字体(专为屏幕阅读优化的无衬线体)、KaTeX系列数学字体、以及path2d-polyfill.min-k9LGsq8g.js(修复Chrome旧版本对Canvas Path2D API的支持)全打进去,避免你装完插件发现中文乱码、公式渲染错位、截图框选失灵。

它适合三类人:第一类是隐私敏感型开发者,比如金融、医疗系统内部工具的前端工程师,所有数据必须留在内网;第二类是离线场景验证者,比如在飞机上改PPT时想快速总结会议纪要,或在工厂车间调试设备网页时需要OCR识别仪表盘数值;第三类是AI原型探索者,不用搭后端、不写API胶水代码,打开浏览器就能把本地模型能力“拖拽式”嵌入任意网页。这不是替代LangChain的方案,而是让你在LangChain还没写第一行代码前,先用手感摸清模型的真实延迟、上下文窗口表现和错误模式。

2. 架构设计与模块拆解:为什么这样组织代码?

PageAssist的目录结构看似杂乱(光字体文件就塞了9个.ttf),实则每一处都对应一个真实踩过的坑。我拆开它的manifest.json和资源树,还原出这套架构背后的四层防御逻辑:隔离性防御、兼容性防御、加载性防御、配置性防御

2.1 隔离性防御:Web Worker + Background Service双线程保障

浏览器扩展最怕什么?主线程阻塞。当你在侧边栏点击“识别截图”,如果OCR逻辑直接跑在sidepanel-CcddD5Lw.js里,整个页面会卡顿1–3秒,用户会本能地刷新网页——这在PageAssist里被彻底规避。它的OCR流程是这样流转的:

  1. 用户在侧边栏点击“截图识别”,sidepanel-CcddD5Lw.js捕获当前标签页可视区域截图(canvas.toDataURL),生成base64字符串;
  2. 该字符串被postMessage发送给worker.min.js(一个独立Web Worker);
  3. worker.min.js加载tesseract-core-simd.js,解压eng-fast.traineddata.gz,调用Tesseract.recognize();
  4. 识别完成后,结果通过postMessage回传给sidepanel,更新UI。

提示:Web Worker无法直接访问DOM,所以截图必须在主线程完成并序列化传输。PageAssist没走“Worker里canvas.getContext”这种伪方案,因为跨域限制下Worker根本拿不到网页内容——这是很多教程没说透的硬伤。

而大模型调用走的是另一条路:background.js作为常驻后台服务,持有与本地API的持久连接状态(比如token缓存、重试计数器),sidepanel通过chrome.runtime.sendMessage向background发起请求,background再fetch本地服务。这样设计的好处是:即使你关闭侧边栏,background仍在监听模型健康状态;当Ollama崩溃重启后,background能自动探测并通知侧边栏“模型已恢复”。

2.2 兼容性防御:字体、Polyfill、路径渲染三位一体

看目录里的这些文件:Arimo-DFtMTKhJ.ttf、KaTeX_*系列.ttf、path2d-polyfill.min-k9LGsq8g.js——它们不是装饰品,而是为解决三个经典兼容问题:

  • Arimo字体:Tesseract.js识别结果默认用monospace显示,但在Chrome某些缩放比例下,等宽字体字符宽度计算异常,导致文字换行错乱。Arimo是Google开源的屏幕友好字体,字重均匀、x-height适中,PageAssist强制在CSS里声明font-family: 'Arimo', monospace,确保识别结果排版稳定;
  • KaTeX字体:当你让模型输出数学公式(比如\\int_0^1 x^2 dx = \\frac{1}{3}),侧边栏需渲染LaTeX。KaTeX要求特定字体文件才能正确显示积分号、分式线等符号,PageAssist把全套KaTeX字体打包进来,避免因字体缺失渲染成方块;
  • path2d-polyfill:截图框选功能依赖Canvas的Path2D API绘制虚线矩形,但Edge 110以下和部分国产浏览器不支持。这个polyfill文件(带随机哈希后缀k9LGsq8g)是定制版,只修补Path2D构造函数和stroke()方法,体积仅4.2KB,不影响主线程性能。

注意:所有字体文件名带哈希(如Arimo-DFtMTKhJ.ttf),是因为manifest.json要求静态资源路径必须固定。PageAssist构建时用Webpack哈希命名,避免浏览器缓存旧字体导致样式错乱——这点很多开源项目忽略,结果用户升级插件后发现公式变问号。

2.3 加载性防御:资源懒加载与按需解压

tesseract-core-simd.js体积达8.7MB(gzip后3.2MB),如果首次打开侧边栏就加载,用户会明显感知白屏。PageAssist采用三级懒加载策略:

  1. 首屏不加载OCR:sidepanel.html初始只加载基础UI框架,Tesseract相关脚本(tesseract-core-simd.js、eng-fast.traineddata.gz)在用户点击“OCR”按钮后才动态import();
  2. 训练数据延迟解压:eng-fast.traineddata.gz不是直接用fetch加载,而是通过WebAssembly.Memory分配内存块,用pako库在Worker线程内解压,解压后内存直接传递给Tesseract,避免JSON序列化开销;
  3. 模型拉取脚本隔离:ollama-pull.js和hf-pull.js不随插件启动,只在设置页点击“拉取模型”时执行,且自带进度条和错误捕获(比如Ollama未运行时提示“Connection refused”而非静默失败)。

这种设计让插件安装后首次启动时间控制在300ms内(实测Chrome 124),远低于同类扩展平均1.2秒的冷启动耗时。

2.4 配置性防御:messages.json与动态API路由

PageAssist的国际化不是噱头。messages.json里不仅有中英文翻译,还包含API地址模板:

{ "ollama_api_url": { "message": "http://localhost:11434/api/chat", "description": "Ollama API endpoint" }, "hf_api_url": { "message": "http://localhost:8000/v1/chat/completions", "description": "Hugging Face Text Generation Inference API endpoint" } }

这意味着你无需修改任何JS代码,只需在options.html里填入自定义URL(比如公司内网的http://ai-gateway.internal:3000/ollama),插件就会自动替换所有fetch请求的目标。更关键的是,它支持环境变量注入:在构建时可通过–env=PROD参数,让messages.json自动切换为生产环境API地址,开发/测试/生产三套配置零代码改动。

3. 安装与配置全流程:从下载到第一次成功识别

PageAssist的“一键安装包”本质是已签名的CRX文件,但Chrome 123+默认禁用非Chrome Web Store来源的扩展。别急,这里给你一条实测有效的本地安装路径,全程无需开发者模式反复开关。

3.1 准备工作:确认本地AI服务已就绪

PageAssist不提供模型,只提供调用管道。你必须先让本地服务跑起来:

  • Ollama方案(推荐新手)
    下载Ollama(https://ollama.com/download),终端执行:
    bash # 启动Ollama服务(默认监听11434端口) ollama serve & # 拉取一个轻量模型(qwen:0.5b仅380MB,10秒内拉完) ollama pull qwen:0.5b # 验证服务可用(返回HTTP 200) curl http://localhost:11434

  • Hugging Face方案(适合已有模型)
    使用Text Generation WebUI(https://github.com/oobabooga/text-generation-webui):
    bash git clone https://github.com/oobabooga/text-generation-webui cd text-generation-webui pip install -r requirements.txt # 启动API(--api --listen --port 8000) python server.py --api --listen --port 8000 # 验证(返回JSON格式) curl http://localhost:8000/docs

实操心得:Ollama的/api/chat接口返回字段是message.content,而Hugging Face的/v1/chat/completions返回choices[0].message.content,PageAssist内置了自动适配逻辑——它会先发试探请求,根据响应结构决定解析路径。所以你填错URL也不会报错,只会提示“模型响应格式异常”,比硬编码强得多。

3.2 安装扩展:绕过Chrome商店限制的三种方式

方式一:加载已解压文件夹(最稳妥)
1. 解压PageAssistProvider-DGjIL8OH.zip,得到包含manifest.json的文件夹;
2. 打开Chrome →chrome://extensions→ 开启右上角“开发者模式”;
3. 点击“加载已解压的扩展程序”,选择解压后的文件夹;
4. 插件图标出现在地址栏右侧,点击即可打开侧边栏。

方式二:手动安装CRX(适合批量部署)
1. 将下载的.crx文件后缀改为.zip,用解压软件打开;
2. 复制全部内容到新文件夹(如PageAssist-Unpacked);
3. 按方式一操作加载该文件夹(不要直接拖拽CRX文件,Chrome 124已禁用)。

方式三:Edge浏览器专用(企业环境友好)
Edge允许从本地安装CRX:
1.edge://extensions→ 开启“开发者模式”;
2. 直接将.crx文件拖入页面,确认安装。

注意:如果加载时报错“清单文件缺失key字段”,说明你用了旧版Manifest V2构建包。PageAssist要求Manifest V3,manifest.json里必须有"key"字段(已内置),若报此错请重新下载最新版。

3.3 首次配置:三步完成模型绑定与OCR校准

安装后首次打开侧边栏(点击插件图标 → “打开侧边栏”),你会看到空白界面。此时需进入设置页配置:

  1. 点击右上角齿轮图标 → 进入Options设置页
  2. 模型配置区
    - 选择“Ollama”或“Hugging Face”;
    - API URL保持默认http://localhost:11434/api/chat(Ollama)或http://localhost:8000/v1/chat/completions(HF);
    - 模型名称填qwen:0.5b(Ollama)或llama-3-8b(HF),注意名称必须与你ollama list或HF启动时指定的模型名完全一致;
    - 温度值(Temperature)建议从0.3开始,避免模型胡言乱语。

  3. OCR配置区
    - 语言包默认eng(英文),如需中文识别需额外下载chi_sim.traineddata.gz并放入扩展目录(稍后详述);
    - 置信度阈值(Confidence Threshold)设为65%,低于此值的文字将被过滤,避免识别噪声;
    - 点击“保存设置”,页面提示“配置已更新”。

此时回到侧边栏,点击左上角“截图识别”按钮,选择网页任意区域——你会看到截图实时上传到Worker,进度条走完后,识别文字立刻出现在下方文本框。第一次成功识别耗时约2.1秒(M1 Mac),后续识别因训练数据已缓存,降至1.3秒内。

3.4 中文OCR支持:手动添加训练数据的完整步骤

PageAssist默认只带英文包(eng-fast.traineddata.gz),要支持中文需手动补充:

  1. 访问Tesseract官方训练数据仓库(https://github.com/tesseract-ocr/tessdata_fast),下载chi_sim.traineddata.gz
  2. 解压得到chi_sim.traineddata文件;
  3. 将其重命名为chi_sim.traineddata.gz(保持.gz后缀,PageAssist加载逻辑依赖此命名);
  4. 放入扩展文件夹根目录(与manifest.json同级);
  5. 在Options设置页的OCR语言选项中,选择chi_sim并保存。

实操心得:中文识别效果取决于字体。PageAssist的Arimo字体对简体中文支持一般,建议在侧边栏CSS中追加:
css .ocr-result { font-family: "PingFang SC", "Microsoft YaHei", sans-serif; }
这需要你修改sidepanel-CcddD5Lw.js里的style标签,或通过浏览器开发者工具临时注入——虽然不算“一键”,但比重打包整个扩展快得多。

4. 核心功能实操详解:OCR识别与大模型推理的深度用法

PageAssist的侧边栏看似简单,但隐藏着针对开发者场景的精细设计。下面拆解两个高频功能的底层逻辑和进阶技巧,让你用出80%用户不知道的效率。

4.1 OCR识别:不只是截图,还能处理网页元素与PDF渲染

PageAssist的OCR入口有三个触发点,对应不同精度需求:

  • “截图识别”按钮:调用chrome.tabs.captureVisibleTab()获取当前标签页可视区域截图,适合快速提取网页标题、按钮文字、表格数据;
  • “选择元素识别”按钮:注入content script,监听DOM点击事件,当你鼠标悬停在某个div/p标签上时,高亮边框,点击后仅截取该元素区域——这对识别复杂网页中的局部信息(比如电商页面的商品价格、新闻网站的摘要段落)极其精准;
  • “PDF识别”按钮:当当前标签页是PDF文件(application/pdfMIME类型)时,自动调用PDF.js解析每一页为canvas,逐页OCR。实测识别一份20页技术文档PDF,耗时47秒(M1 Pro),准确率92.3%(对比人工校对)。

关键细节:PDF识别时,PageAssist会自动检测PDF是否含文本图层。如果PDF本身是扫描件(纯图像),则走Tesseract流程;如果是可选中文本的PDF,则优先提取原生文本(速度提升10倍),仅对模糊区域补OCR。这个逻辑写在pdf-processor.js里,通过pdfDocument.numPagespage.getTextContent()双重判断。

OCR结果不是简单堆砌文字,而是结构化输出:

{ "text": "PageAssist让浏览器成为AI终端", "blocks": [ { "text": "PageAssist", "bbox": [120, 85, 220, 115], "confidence": 96.2 }, { "text": "让浏览器成为AI终端", "bbox": [230, 85, 580, 115], "confidence": 89.7 } ] }

bbox字段是文字在截图中的坐标(x1,y1,x2,y2),你可以用它做反向定位:比如识别出“提交”按钮文字,就自动计算坐标并模拟点击document.elementFromPoint(x,y).click()。PageAssist在侧边栏提供了“坐标调试模式”开关,开启后所有识别文字旁显示红色坐标标记,方便你验证位置精度。

4.2 大模型推理:从单次问答到上下文对话的工程实现

PageAssist的模型交互不是简单的“提问-回答”,而是维护完整的对话上下文(Conversation History)。它的后台服务(background.js)用Map对象存储每个标签页的会话ID与消息数组:

// background.js 中的会话管理 const conversations = new Map(); // key: tabId, value: { messages: [{role:'user',content:'...'}, {role:'assistant',content:'...'}] } // 当侧边栏发送新消息 chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { if (request.action === 'sendToModel') { const tabId = sender.tab.id; const history = conversations.get(tabId) || { messages: [] }; // 自动添加system角色(可配置) if (history.messages.length === 0) { history.messages.push({ role: 'system', content: '你是一个专业的技术助手,回答要简洁准确,避免冗长解释。' }); } // 追加用户消息 history.messages.push({ role: 'user', content: request.prompt }); // 调用本地API(自动适配Ollama/HF格式) fetchModel(history.messages) .then(response => { history.messages.push({ role: 'assistant', content: response }); conversations.set(tabId, history); sendResponse({ success: true, response }); }); } });

这意味着:你在知乎页面打开侧边栏问“这篇文章讲了什么”,得到摘要后,接着问“用三点总结”,模型能记住前文语境,而不是当成全新对话。上下文窗口默认设为4096 tokens(Ollama的qwen:0.5b支持),当消息超长时,PageAssist会自动裁剪最早的历史消息(保留system和最近3轮),确保不触发模型token溢出错误。

实操技巧:如果你想让模型专注处理当前网页内容,PageAssist提供“网页快照”功能。点击侧边栏右上角“抓取网页”按钮,它会:
1. 获取当前页面document.body.innerText(去除HTML标签,保留换行);
2. 截取前3000字符(避免超token);
3. 自动拼接到提示词前:“以下是网页内容:\n[快照文本]\n\n请基于以上内容回答:[你的问题]”。
这比手动复制粘贴快5倍,且不会漏掉隐藏在CSS里的关键文本(比如display:none的div)。

4.3 设置页高级配置:隐藏功能与调试开关

Options设置页表面只有API配置,但按住Ctrl+Shift同时点击“保存设置”按钮3次,会激活隐藏的开发者面板:

  • 日志级别开关:可设为debug(打印所有fetch请求/响应)、warn(仅警告)、error(仅错误),日志输出到console,方便排查网络问题;
  • 模型健康检查:点击“测试连接”会发送空请求到API,返回状态码和响应头,比如Ollama返回{"status":"success"},HF返回{"model":"llama-3-8b"}
  • OCR性能监控:显示最近10次识别的耗时分布图(用Canvas绘制),帮你判断是否该升级硬件或换模型;
  • 字体覆盖路径:输入自定义字体CSS URL(比如公司内网的字体CDN),覆盖默认Arimo字体。

注意:隐藏面板的激活组合键(Ctrl+Shift+点击)在manifest.json里写死为"dev_mode": true,生产环境打包时会移除。所以你下载的正式包里这个功能是关闭的,但源码中保留了开关逻辑——这是给二次开发者留的后门。

5. 常见问题与实战排障:那些文档里不会写的坑

PageAssist虽标榜“开箱即用”,但实际部署中总有些边界情况让人抓狂。我把过去三个月社区反馈的TOP5问题整理成速查表,并附上真正管用的解决方案(不是“重启试试”那种废话)。

问题现象根本原因一行命令修复实操备注
侧边栏打开空白,控制台报Failed to load resource: net::ERR_BLOCKED_BY_CLIENT广告拦截插件(如uBlock Origin)误杀PageAssist的本地资源请求在uBlock设置中添加规则:@@*://*/*tesseract-core-simd.js$domain=~localhost必须加domain=~localhost,否则规则全局生效影响其他网站
OCR识别结果全是乱码()Tesseract.js默认用Latin-1编码解析训练数据,但中文包需UTF-8修改worker.min.js第88行:Tesseract.setParameters({ 'tessedit_char_whitelist': '' });Tesseract.setParameters({ 'tessedit_char_whitelist': 'UTF-8' });此处不是添加白名单字符,而是强制编码声明,PageAssist v2.3.1已修复
Ollama模型响应超时(Error: timeout of 30000ms exceeded)Chrome扩展默认fetch超时30秒,但大模型首次加载权重可能需45秒在background.js中修改fetch调用:fetch(url, { signal: AbortSignal.timeout(60000) })超时值单位是毫秒,60000=60秒,改完需重载扩展
侧边栏文字渲染模糊,公式显示为方块KaTeX字体未正确加载,Chrome缓存了旧版字体文件在Chrome地址栏输入:chrome://settings/clearBrowserData→ 勾选“缓存的图片和文件” → 清除清除后重启浏览器,首次加载会慢几秒(字体重新下载)
设置页保存后不生效,API URL仍为默认值messages.json被浏览器缓存,修改后未触发热更新chrome://extensions页,找到PageAssist → 点击“详情” → 关闭“允许访问文件网址” → 再开启此操作强制Chrome重新读取manifest.json,加载最新messages

5.1 一个真实案例:如何在无GPU笔记本上跑通中文OCR+LLM

上周有位用户反馈:“i5-8250U笔记本,8GB内存,装了qwen:1.8b但OCR识别中文全错”。我让他做了三件事:

  1. 降级OCR模型chi_sim.traineddata对低配CPU压力大,换成更轻量的chi_sim_vert.traineddata(垂直排版优化版),体积小40%,识别速度提升2.3倍;
  2. 限制LLM上下文:在Options里把“最大上下文长度”从4096调至2048,避免内存溢出;
  3. 启用SIMD加速开关:在worker.min.js里找到tesseract-core-simd.js加载逻辑,确认Tesseract.setParameters({ 'use_simd': true })已启用(PageAssist默认开启,但某些旧版Chrome需手动确认)。

结果:OCR识别耗时从12秒降至3.8秒,LLM响应稳定在8秒内(qwen:1.8b在CPU上合理预期)。他后来在GitHub上提PR,把chi_sim_vert加入默认语言选项——这就是PageAssist的设计哲学:不追求参数炫技,而是让真实硬件跑得稳。

5.2 安全边界提醒:本地运行≠绝对安全

必须强调一个认知误区:PageAssist所有数据“不出设备”,但不等于“绝对安全”。这里有两层风险:

  • 本地服务暴露风险:如果你把Ollama API绑定到0.0.0.0:11434(而非127.0.0.1:11434),局域网内其他设备可访问你的模型。PageAssist的设置页有明确警告:“请勿将API地址设为0.0.0.0,除非你了解网络风险”,但很多用户直接忽略;
  • 扩展权限滥用风险:manifest.json申请了"activeTab""scripting"权限,理论上可注入任意JS到当前网页。PageAssist的content script只做截图和元素选择,但如果你从非官方渠道下载了篡改版,风险自负。

最后一个小技巧:想验证插件是否真没联网?打开Chrome任务管理器(Shift+Esc),找到PageAssist进程,观察“网络”列。正常状态下该列为0,只有当你点击“测试连接”时才短暂跳动——这是最直观的隐私保障证明。

6. 进阶玩法与二次开发:从使用者到贡献者

PageAssist的开源价值不仅在于使用,更在于它是一份高质量的浏览器扩展工程范本。如果你有前端或AI工程经验,可以轻松拓展它的能力边界。

6.1 添加新模型支持:30分钟接入Llama.cpp

Ollama和Hugging Face之外,Llama.cpp是CPU推理的黄金标准。要让它支持PageAssist,只需三步:

  1. 启动Llama.cpp API
    bash # 下载llama.cpp,编译server git clone https://github.com/ggerganov/llama.cpp cd llama.cpp && make server # 启动(绑定到127.0.0.1:8080) ./server -m models/llama-3-8b.Q4_K_M.gguf -c 2048 --host 127.0.0.1 --port 8080

  2. 扩展API适配器:在background.js中新增llamacppAdapter对象,模仿现有Ollama适配器,处理/completion接口的请求/响应转换;

  3. 修改Options设置页:在options-NzNWK9XK.js里增加“Llama.cpp”选项,API URL默认http://localhost:8080/completion

整个过程不涉及修改核心逻辑,PageAssist的架构天然支持多后端。社区已有人提交PR实现了这一功能,合并后只需在设置页选择即可。

6.2 自定义OCR后处理:用正则清洗识别结果

Tesseract识别数字和代码时易出错(比如0识别成Ol识别成1)。PageAssist预留了后处理钩子:

在sidepanel-CcddD5Lw.js中找到processOCRResult(text)函数,目前是空实现:

function processOCRResult(text) { // TODO: Add custom post-processing here return text; }

你可以填入:

function processOCRResult(text) { // 修复常见混淆字符 return text .replace(/O(?=\d)/g, '0') // O后面跟数字时转0 .replace(/l(?=\d)/g, '1') // l后面跟数字时转1 .replace(/I(?=\d)/g, '1') // I后面跟数字时转1 .replace(/\s+/g, ' ') // 合并多余空格 .trim(); }

保存后重载扩展,所有OCR结果自动清洗。这种设计比改Tesseract训练数据现实得多。

6.3 主题定制:从深色模式到企业VI

PageAssist默认是深色主题(#1e1e1e背景),但它的CSS体系支持主题切换。所有样式定义在PageAssistProvider-DGjIL8OH.css中,变量全部用CSS自定义属性:

:root { --bg-primary: #1e1e1e; --bg-secondary: #252526; --text-primary: #e0e0e0; --accent: #007acc; }

要改成企业蓝主题,只需在manifest.jsoncontent_scripts里注入自定义CSS:

{ "matches": ["<all_urls>"], "css": ["theme-company-blue.css"] }

然后创建theme-company-blue.css

:root { --bg-primary: #0a2540; --bg-secondary: #1a3a5f; --text-primary: #ffffff; --accent: #0066cc; }

PageAssist的组件(按钮、输入框、侧边栏)全部用这些变量构建,主题切换零侵入。

我个人在实际使用中发现,最值得投入时间的不是折腾新功能,而是建立自己的“模型-OCR工作流”。比如我固定用qwen:0.5b做代码解释,用chi_sim_vert做中文文档OCR,再把常用提示词(如“把以下代码转成中文注释”)保存为侧边栏快捷按钮。这样一套组合下来,处理日常技术文档的效率提升了3倍——PageAssist真正的价值,是把AI能力从“需要学习的工具”,变成了“肌肉记忆的一部分”。

本文还有配套的精品资源,点击获取

简介:PageAssist是专为开发者设计的浏览器扩展,支持Chrome、Edge等Manifest V3浏览器,能在不联网前提下调用本地运行的AI模型(如Ollama托管的LLM、Hugging Face本地API)和OCR识别能力(基于Tesseract.js)。安装后即可在网页侧边栏打开交互界面,实时提交文本或截图进行推理与文字提取。插件内置完整功能模块:后台服务管理模型连接、设置页配置API地址与参数、模型拉取脚本(ollama-pull.js/hf-pull.js)简化部署、Web Worker封装的OCR核心(含tesseract-core-simd.js和英文训练数据eng-fast.traineddata.gz),确保识别高效且不阻塞页面。所有资源已打包为即装即用格式,包含多尺寸图标(16–128px)、国际化消息文件、CSS样式、字体文件(Arimo/KaTeX系列)及Path2D兼容补丁。全程数据不出设备,适合隐私敏感场景、离线开发测试或快速验证本地AI能力。


本文还有配套的精品资源,点击获取

http://www.jsqmd.com/news/967755/

相关文章:

  • GeoServer cql_filter避坑指南:从‘属性名模糊查询无效’到‘空间过滤报错’的8个常见问题解决
  • 想进中科院软件所读研?双非学长亲述:我是如何靠项目和竞赛拿到优营的
  • 遗传算法实战:编码选择、适应度设计与选择算子工程指南
  • 联发科设备救砖神器:MTKClient终极指南,三步搞定设备解锁与刷机
  • 代码评审与合并冲突实战:新人必见的 Git 事故复盘
  • 信阳市2026年黄金回收白银回收铂金回收放心选真心推荐靠谱门店排行+联系电话整理 - 奢金阁
  • 2026 降AI率工具深度实测”?:亲测好用,科研党救急指南
  • GEO服务商横向测评:搜索系、AI工具系、发稿系,谁更适合企业长期 - 资讯纵览
  • 遗传算法Python实战:100皇后问题求解与工程化实现
  • 岳阳市2026年黄金回收白银回收铂金回收放心选真心推荐靠谱门店排行+联系电话整理 - 奢金阁
  • Windows Subsystem for Android:为什么它正在改变Windows应用生态
  • Cowabunga Lite 终极指南:三步实现iOS深度定制,无需越狱风险
  • Windows字体渲染终极优化指南:如何让Windows文字显示效果媲美Mac
  • 别光看WriteUp了!手把手教你用GDB动态调试攻防世界PWN题(以level0为例)
  • 来宾手表回收包包回收哪家店铺靠谱价格高?26年甄选top榜店铺排行推荐 - 莘州文化
  • 用 AI 工具提升刷题效率:实战经验与工具链深度测评
  • 三天跑通中文NLP实战:从环境配置到文本分类落地
  • 项目管理中的“二八法则”,你真的用对了吗?
  • 2026 新余厨卫屋面地下室漏水测评靠谱防水商家对比参考 - 吉修匠
  • 别急着删缓存!遇到conda的InvalidArchiveError,先试试这几条清理命令
  • 生产级机器学习系统四大支柱:部署、性能、监控与治理
  • 肇庆不锈钢空心拉手生产厂哪家好:重磅上新 - 品牌推广大师
  • 终极鸣潮自动化解决方案:如何用ok-ww工具解放你的游戏时间
  • Switch手柄PC适配指南:3步解锁BetterJoy的完整游戏体验
  • 终极指南:5分钟从图表中提取科研数据的免费神器
  • 摩托罗拉MotoSync+应用故障致WiFi路由器变砖,官方未作解释
  • 智能面试刷题系统设计:自适应出题与薄弱点诊断
  • 工业级遗传算法实战:算子协同、自适应调控与早熟防治
  • MATLAB光学衍射仿真包:多缝远场、单缝近场与泰伯自成像三合一演示
  • 告别系统臃肿:Driver Store Explorer让你的Windows驱动管理轻松又安全