php发展

首页 » 常识 » 问答 » 一文告诉你,如何使用Python构建一个
TUhjnbcbe - 2024/6/28 20:28:00
白癜风皮肤病 http://pf.39.net/xwdt/210612/9056233.html

来源

hackernoon

编译

武明利

责编

Carol

在这篇文章中,我将向您展示如何使用Python构建自己的答案查找系统。基本上,这种自动化可以从图片中找到多项选择题的答案。

有一件事我们要清楚,在考试期间不可能在互联网上搜索问题,但是当考官转过身去的时候,我可以很快地拍一张照片。这是算法的第一部分。我得想办法把这个问题从图中提取出来。

似乎有很多服务可以提供文本提取工具,但是我需要某种API来解决此问题。最后,Google的VisionAPI正是我正在寻找的工具。很棒的事情是,每月前个API调用是免费的,这足以让我测试和使用该API。

VisionAI

首先,创建Google云帐户,然后在服务中搜索VisionAI。使用VisionAI,您可以执行诸如为图像分配标签来组织图像,获取推荐的裁切顶点,检测著名的风景或地方,提取文本等工作。

检查文档以启用和设置API。配置后,您必须创建JSON文件,包含您下载到计算机的密钥。

运行以下命令安装客户端库:

pipinstallgoogle-cloud-vision然后通过设置环境变量GOOGLE_APPLICATION_CREDENTIALS,为应用程序代码提供身份验证凭据。

importos,iofromgoogle.cloudimportvisionfromgoogle.cloud.visionimporttypes#JSONfilethatcontainsyourkeyos.environ[GOOGLE_APPLICATION_CREDENTIALS]=your_private_key.json#Instantiatesaclientclient=vision.ImageAnnotatorClientFILE_NAME=your_image_file.jpg#Loadstheimageintomemorywithio.open(os.path.join(FILE_NAME),rb)asimage_file:content=image_file.readimage=vision.types.Image(content=content)#Performstextdetectionontheimagefileresponse=client.text_detection(image=image)print(response)#Extractdescriptiontexts=response.text_annotations[0]print(texts.description)在运行代码时,您将看到JSON格式的响应,其中包括检测到的文本的规范。但我们只需要纯描述,所以我从响应中提取了这部分。

在Google上搜索问题

下一步是在Google上搜索问题部分来获得一些信息。我使用正则表达式(regex)库从描述(响应)中提取问题部分。然后我们必须将提取出的问题部分进行模糊化,以便能够对其进行搜索。

importreimporturllib#Ifendingwithquestionmarkif?intexts.description:question=re.search(([^?]+),texts.description).group(1)#Ifendingwithcolonelif:intexts.description:question=re.search(([^:]+),texts.description).group(1)#Ifendingwithnewlineelif\nintexts.description:question=re.search(([^\n]+),texts.description).group(1)#Slugifythematchslugify_keyword=urllib.parse.quote_plus(question)print(slugify_keyword)

抓取的信息

我们将使用BeautifulSoup抓取前3个结果,以获得关于问题的一些信息,因为答案可能位于其中之一。

另外,如果您想从Google的搜索列表中抓取特定的数据,不要使用inspect元素来查找元素的属性,而是打印整个页面来查看属性,因为它与实际的属性有所不同。

我们需要对搜索结果中的前3个链接进行抓取,但是这些链接确实被弄乱了,因此获取用于抓取的干净链接很重要。

/url?q=

1
查看完整版本: 一文告诉你,如何使用Python构建一个