业界动态
python 百度识图_Python3.5 Windows 7下 利用百度识图来获得图片信息
2024-12-06 12:32

#!/usr/bin/python

python 百度识图_Python3.5 Windows 7下 利用百度识图来获得图片信息

from PIL import Image

from PIL import ImageFilter

import urllib

import requests

import re

import json

# hack CERTIFICATE_VERIFY_FAILED

# https://github.com/mtschirs/quizduellapi/issues/2

import ssl

if hasattr(ssl, '_create_unverified_context'):

ssl._create_default_https_context = ssl._create_unverified_context

UA = 'User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36'

pic_url = "https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew?module=login&rand=sjrand&0.21191171556711197"

'''

def get_img():

resp = urllib.urlopen(pic_url)

raw = resp.read()

with open("https://blog.csdn.net/weixin_39609752/article/details/tmp.png", 'wb') as fp:

fp.write(raw)

return Image.open("https://blog.csdn.net/weixin_39609752/article/details/tmp.jpg")

'''

def get_img(im):

(WITH,HEIGHT) = im.size

print("WITH = %d,HEIGHT = %d"%(WITH,HEIGHT))

left = 0

top = 0

right = left + WITH

bottom = top + HEIGHT

return im.crop((left, top, right, bottom))

def baidu_image_upload(im):

url = "http://image.baidu.com/pictureup/uploadshitu?fr=flash&fm=index&pos=upload"

im.save("https://blog.csdn.net/weixin_39609752/article/details/tmp.png")

raw = open("https://blog.csdn.net/weixin_39609752/article/details/tmp.png", 'rb').read()

files = {

'fileheight': "0",

'newfilesize': str(len(raw)),

'compresstime': "0",

'Filename': "image.png",

'filewidth': "0",

'filesize': str(len(raw)),

'filetype': 'image/png',

'Upload': "Submit Query",

'filedata': ("image.png", raw)

}

resp = requests.post(url, files=files, headers={'User-Agent': UA})

#print("resp.text = %s"%resp.text)

# resp.url

redirect_url = "http://image.baidu.com" + resp.text

return redirect_url

def baidu_stu_lookup(im):

redirect_url = baidu_image_upload(im)

# print redirect_url

#print("1111111111redirect_url = %s"%redirect_url)

resp = requests.get(redirect_url)

html = resp.text

#print("2222222222resp.text = %s"%resp.text)

return baidu_stu_html_extract(html)

def baidu_stu_html_extract(html):

pattern = re.compile(r"'multitags':s*'(.*?)'")

matches = pattern.findall(html)

if not matches:

print("Not match")

return '[ERROR?]'

else:

print("Match")

tags_str = matches[0]

for item in matches:

print("item = %s"%item)

#print("tags_str = %s"%tags_str)

result = list(filter(None, tags_str.replace(' ', ' ').split()))

return '|'.join(result) if result else '[UNKOWN]'

def ocr_question_extract(im):

# git@github.com:madmaze/pytesseract.git

global pytesseract

try:

import pytesseract

except:

print("[ERROR] pytesseract not installed")

return

(width, height) = im.size

im = im.crop((0, 0, width, height))

im = pre_ocr_processing(im)

#im.show()

return pytesseract.image_to_string(im, lang='chi_sim').strip()

def pre_ocr_processing(im):

im = im.convert("RGB")

(width, height) = im.size

white = im.filter(ImageFilter.BLUR).filter(ImageFilter.MaxFilter(23))

grey = im.convert('L')

impix = im.load()

whitepix = white.load()

greypix = grey.load()

for y in range(height):

for x in range(width):

greypix[x, y] = min(255, max(255 + impix[0,0][0] - whitepix[x, y][0],

255 + impix[0,0][1] - whitepix[x, y][1],

255 + impix[0,0][2] - whitepix[x, y][2]))

new_im = grey.copy()

binarize(new_im, 150)

return new_im

def binarize(im, thresh=120):

assert 0 < thresh < 255

assert im.mode == 'L'

w, h = im.size

for y in range(0, h):

for x in range(0, w):

if im.getpixel((x, y)) < thresh:

im.putpixel((x, y), 0)

else:

im.putpixel((x, y), 255)

if __name__ == '__main__':

# im = get_img()

im = Image.open("tmp.jpg")

'''

try:

print('OCR Question:', ocr_question_extract(im))

except Exception as e:

print ('', e)

'''

im2 = get_img(im)

result = baidu_stu_lookup(im2)

print(result)

将一张名为tmp.jpg的jpeg图片放在代码目录下

显示结果如下

E:Python35python.exe E:/PycharmProjs/baidushitu/baidushitu.py

WITH = 500,HEIGHT = 440

Match

item = 小鸡 哈多利博美 荷兰猪 豚鼠 鸡雏 鸡蛋孵小鸡

小鸡|哈多利博美|荷兰猪|豚鼠|鸡雏|鸡蛋孵小鸡

Process finished with exit code 0

本来是想用来识别12306抢票的验证码,但百度识图的识别率不高,其他的也试了,现在都不太高,所以就在想想有什么好的值得研究推荐下

    以上就是本篇文章【python 百度识图_Python3.5 Windows 7下 利用百度识图来获得图片信息】的全部内容了,欢迎阅览 ! 文章地址:http://lanlanwork.gawce.com/news/11849.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 阁恬下移动站 http://lanlanwork.gawce.com/mobile/ , 查看更多   
最新新闻
福州百度推广价格,透明与策略的平衡
在当今数字化的商业时代,百度推广已成为众多企业在福州拓展市场的重要手段之一,对于许多企业主来说,福州百度推广价格往往是一
百度营销平台手机版 v7.6.4 安卓版
百度营销app是由百度推出的数据营销助手。使用百度营销,可以实时跟踪账户下多条产品线数据实时监控,搜索查看推广宣传内容,调
在百度推广自己的产品赚钱,知乎视角的深入分析与实践指南
在当今数字化的商业时代,百度推广已成为众多企业和个人推广产品、获取收益的重要手段之一,究竟怎样在百度推广自己的产品并赚钱
百度死了吗
(图片来源:全景视觉)陈永伟/文 1月22日晚间,自媒体人方可成在微信公众号“新闻实验室”发布了一篇题为《搜索引擎百度已死》
百度竞价推广落地页怎么设计?设计原则+技巧,看这一篇就够了
9月12日(下周二)【竞价公开课】点击免费预约!百度竞价推广落地页怎么设计,才能最大限度地促成转化呢?作为促成转化(购买)的最
百度地图商家入驻费用
2024年01月14日吴经理100地图标注 , 地图定位 , 导航地图标记网络技术服务;信息技术咨询服务;技术服务、技术开发、技术咨询、
发布需求的平台★容易收录-欢迎发文合作,发帖百度可以收录的内容
尊敬的客户,您好!我们是北京一家专注互联网技术服务公司,可以提供收录效果好,文章排名好的网站进行发文,发得多,各种关键词
百度推广要多少费用?是如何收费的?
~ 随着网络的广泛普及,用户对搜索引擎的依赖和信任度不断上升。百度作为互联网的主要入口,拥有庞大的流量,成为网民获取信息的
百度百科词条创建入口地址
很多人都想自己创建百度百科,但是不知道从哪儿创建。百度百科是大家都可以创建的,但是又不是都能创建成功的,需要有丰富的经验
百度怎么创建词条 创建流程和常见问题
在信息爆炸的时代,百度百科作为全球最大的中文网络百科全书,不仅是知识分享的重要平台,也是个人、企业品牌建立权威形象的有效