
VocabVerse 相机集成、OCR识别、文本提取与翻译、AI板块功能开发、SD端服务器搭建---第八周
本周团队工作:本周团队进入到了拓展功能与核心功能的开发,工作量较大,我们完成了相机集成功能、OCR识别功能、文本提取功能、模型自动下载与嵌入翻译功能、基于 DeepSeek-R1 的流式对话生成、故事生成、Stable Diffusion端服务器搭建与可视化故事板层功能等。我们可以发现,输出的结果中,只有message字段里的content字段的内容是我们需要的,而且包含了思考和最终答案,正是我们
本周团队工作:本周团队进入到了拓展功能与核心功能的开发,工作量较大,我们完成了相机集成功能、OCR识别功能、文本提取功能、模型自动下载与嵌入翻译功能、基于 DeepSeek-R1 的流式对话生成、故事生成、Stable Diffusion端服务器搭建与可视化故事板层功能等。
一、相机集成
1.我们使用了Jetpack的CameraX库,它提供了一致且易于使用的 API 接口,同时解决了不同设备间的兼容性问题。它提供了相机的preview预览,并与fragment生命周期进行绑定,避免资源泄漏,支持人像模式与夜间模式,而且可以通过ImageCapture 拍摄高分辨率照片。
照相机使用权限与特性配置如下:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
2.Toast轻量反馈机制的使用:在Android开发中,"Toast"是一种轻量级的用户反馈机制,用于向用户显示一个浮动的提示信息。它通常用于提供操作成功、警告或错误信息等短暂的通知。Toast消息会显示在屏幕的中间,并且会在几秒钟后自动消失。
二、OCR识别
1.此功能我们团队是通过Google提供的ML Kit实现的。ML Kit的Text Recognition可以实现OCR技术,从图像中检测和识别文本内容。
创建识别器实例:
val options = TranslatorOptions.Builder()
.setSourceLanguage(com.google.mlkit.nl.translate.TranslateLanguage.ENGLISH)
.setTargetLanguage(com.google.mlkit.nl.translate.TranslateLanguage.CHINESE)
.build()
val translator = Translation.getClient(options)
处理图像并识别文本:
recognizer.process(image)
.addOnSuccessListener { visionText ->
val detectedText = visionText.text
onDetectedText(detectedText)
val options = TranslatorOptions.Builder()
.setSourceLanguage(com.google.mlkit.nl.translate.TranslateLanguage.ENGLISH)
.setTargetLanguage(com.google.mlkit.nl.translate.TranslateLanguage.CHINESE)
.build()
val translator = Translation.getClient(options)
实现效果:
三、模型自动下载与嵌入翻译功能
1.翻译模型下载的是Google 提供的神经网络机器翻译模型(NMT模型),这是一种基于 Transformer 架构的神经网络模型,支持55种语言之间的互译,并且经过了8bits量化处理,减小了模型的参数量,可以用于移动设备。当首次下载应用或模型版本有所更新时,此代码会自动下载最新版本的模型到内存中使用。在我们的app中,我们限定了只允许中英文切换,当应用卸载时会自动清除模型。技术实现细节可见VocabVerse图像识别、文字提取与翻译功能实现---第八周-CSDN博客
最终实现效果如下:
四、Deepseek-R1 API的调用与流式对话生成
1.api接口调试:
输出结果为:
我们可以发现,输出的结果中,只有message字段里的content字段的内容是我们需要的,而且包含了思考和最终答案,正是我们需要的。
2.流式响应与trySend():引入流式响应(Streaming),用了 OkHttp + EventSource 实现对 AI 模型的 SSE 监听,这本质上就是模拟 OpenAI 的 Chat Completion Streaming。
val request = Request.Builder()
.url(apiUrl)
.header("Authorization", "Bearer $apiKey")
.post(body)
.build()
val eventSource = EventSources.createFactory(client)
.newEventSource(request, object : EventSourceListener() {
override fun onEvent(...) {
// 解析 delta 内容,一片一片接收
}
})
trySend(content) 是 callbackFlow 提供的一个函数,用于 将数据发送到 Flow 的下游(比如 ViewModel 或 UI)。
3.集成到故事生成功能当中:
具体技术细节详见VocabVerse背单词应用的AI板块开发-CSDN博客
五、StableDiffusion端服务器搭建
1.下图是我们项目中客户端与StableDiffusion服务器的交互:
2.服务器整体架构如下:
六、客户端prompt封装与发送
1.运行流程图如下所示:
2.界面实现:
更多推荐
所有评论(0)