前两天财大气粗的谷歌对外开放了Gemini Pro API,现在任何人都可以免费申请并且使用目前仅次于GPT-4的强大模型,包括最新的多模态和高达32K的上下文处理能力。
谷歌非常慷慨地给免费用户每分钟最多60条请求的条数,这对于个人用户来说已经足够(相比某Open公司的5刀额度和每分钟3条的限制来说)。申请过程简单便捷,只需一个谷歌账户即可,登陆 https://makersuite.google.com 使用自己账号登录直接生成key就OK了。更多详细的申请教程,可以参考我之前的文章:Gemini pro 免费API来了,这里有最全的申请教程
Gemini处理手机截图
很多人拿到了API之后不知道有什么用,结果白白浪费了额度,Gemini目前支持 32K的超长上下文,支持多轮对话,可玩空间非常大。
接下来我会陆续写几篇教程教大家如何把免费的API用起来,比如如何部署自己的Gemini pro chat。还有别忘了 Gemini 这次也开放了vision api,我们可以使用多模态去处理图片。
下面我分享的是如何利用Gemini pro vision API 整理手机截屏图片的过程。
我个人有个习惯,每当看到有意思的新闻或评论的时候,我会截屏保存,随着时间的推移,这些截屏图片逐渐积累,占用了大量的手机存储空间,而且平时也不好检索,回顾效率非常低。
趁着谷歌开放了Gemini API,我开始想能不能使用谷歌的gemini vision 提取图片中的文字内容,总结之后把这些文字保存到备忘录或同步到Notion中。这样,我就可以放心地删除这些图片,同时还能方便地搜索图片中的文字。
实现过程
我的主要实现思路是利用苹果手机自带的“快捷指令”功能。每当我截屏后,触发快捷指令,把图片上传到服务器。服务器随后调用 Gemini pro vision,提取图片中的文字内容,然后将这些文字同步到Notion然后将内容追加到备忘录。
说干就干
首先我们我们去Gemini 官方文档的地址:https://ai.google.dev/tutorials/python_quickstart 根据我们需要用到的语言找到gemini-pro-vision对应的demo,这里不一定选择Python,可以选择我们最拿手的语言即可。
我们直接把demo扔给GPT4,让他帮我们根据需求生成代码。下面是根据需求GPT-4生成的代码,我们拷贝直接测试一下,如果出现报错就把报错内容发给GPT进行修改,几轮下来,下面是可执行的代码:
import logging
from PIL.ExifTags import TAGS
from flask import Flask, request,Response
import os
import google.generativeai as genai
import google.ai.generativelanguage as glm
app = Flask(__name__)
def get_exif_date(image_path):
try:
image = Image.open(image_path)
exif_data = image._getexif()
date_keys = {'DateTime', 'DateTimeOriginal', 'DateTimeDigitized'}
return {TAGS.get(key): value for key, value in exif_data.items() if TAGS.get(key) in date_keys} if exif_data else None
except IOError:
return "Error opening the file. Please check the file path."
def process_image(file_content):
API_KEY = 'your_key'
genai.configure(api_key=API_KEY)
model = genai.GenerativeModel('gemini-pro-vision')
response = model.generate_content(
glm.Content(
parts=[
glm.Part(text="extract text from the picture,and summarize the text in Chinese"),
glm.Part(inline_data=glm.Blob(mime_type='image/jpeg', data=file_content))
],
),
)
response.resolve()
return response
@app.route('/upload', methods=['POST'])
def upload_file():
if 'file' not in request.files:
return 'No file part in the request', 400
file = request.files['file']
if file.filename == '':
return 'No file selected for uploading', 400
file_content = file.read()
response = process_image(file_content)
app.logger.info(response.text)
exif_info = get_exif_date(file)
if response:
res = f"图片名称:{file.filename}"
res += f",时间:{exif_info.get('DateTimeOriginal','')}" if exif_info else ""
res += f",\n\n内容:{response.text}"
return res
else:
return "Error: " + response.text, response.status_code
if __name__ == '__main__':
app.run(port=5600)
把代码扔到我们的服务器,绑定域名,这一步完成。
注意因为某些神秘的原因,Gemini API在国内访问存在限制,如果自己的手机有网络环境也可以直接在快捷指令中调用Gemini API,省去这一步,因为我还想把图片都整理到Notion,再加上自己有服务器,所以有了这一步的中转。
配置IPhone 快捷指令
部署中转Gemini的服务之后,我们配置一下手机端的快捷指令。进入快捷指令界面之后我们点击右上角的+号新增,根据实际情况我们可以修改或者新增自己的逻辑,这这里我直接把识别返回的内容追加到我的一个备忘录中。
下面是识别成功之后的追加内容:
OK,走到这里就大功告成了,后续我们截图之后设置一下快捷指令的触发,比如我设置的是轻敲两下,后台就会通过Gemini处理我们的图片了,随着AI工具的越来越多,推荐大家可以有自己的一台小服务器,不高的价格可以让你轻松实现许多的功能,比如部署自己的Gemini pro chat,部署只供自己使用的ChatGTP等等。
以上就是我关于Gemini vision API处理手机图片的分享,希望你能阅有所获,如果想加入社群可以扫下方的二维码添加我的微信,这里有最新的AI资讯和应用案例,互相交流共同提升,备注交流群,我会拉你入群(为了防止恶意广告营销,让大家有更好的交流氛围,现在进群需要9.9的门槛,希望大家理解~),如果对加群不感兴趣也欢迎加我微信围观朋友圈,我会经常更新AI领域的好玩的工具。
如果对您有帮助请关注点赞对我表示支持,谢谢~