python 百度ocr识别_Python使用百度Ocr识别文字保存CSV

1.准备:

1)Python开发环境, 笔者用的是3.7; 工具用的是Pycharm

2)百度云后台创建文字识别的应用, 获取AppID, API key, Secret Key

百度云后台创建文字识别的应用

3) 百度模块

pip install baidu-aip

安装百度模块

4) 要保存成csv需要用到pandas模块

pip Install pandas

安装pandas成功

2.上路:

1)初始化百度客户端, 用来发送图片信息

初始化百度客户端

2)调用通用文字接口

调用通用文字接口并返回数据

这边我们断点查看一下返回来的数据:

返回结果

3)保存成CSV

这里不显示返回数据的进一步处理过程,我把处理后的数据保存到全局变量Company_Data中。具体数据处理过程可以参考本文源码或者在《Python使用腾讯Ocr识别文字》中的方法.下面把Company_Data中的数据保存成CSV.

保存成CSV

3.结果:

读取图片内容

读取6张图片

输出结果:

输出识别结果

4.完整代码:

# -*- coding: utf-8 -*-

from aipimport AipOcr

import os

import pandas

# create a new AipOcr

APP_ID ="16921559"

API_KEY ="HfpMM13vAnDlTRWabQVDKnk8"

SECRET_KEY ="EQpdKCeICwfHLWazx0vsIpRqoRkVX6pM"

IMG_EXT = ['.png', '.jpg', '.jpeg', '.bmp']

Company_Data = []

# initialize

client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

#1 get text content

def imageReader(file_path):

with open(file_path,'rb')as f:

content = f.read()

# general text API

api_result = client.basicGeneral(content)

# text content

words_result = []

for iin api_result['words_result']:

words_result.append(i['words'])

return words_result

#2 write the content into file

def saveData(file_path):

# separate the file name and extend type

filename, ext = os.path.splitext(file_path)

if extin IMG_EXT:

#        new_path = file_path + '.txt'

print(" reading the following image %s" % file_path)

result = imageReader(file_path)

#with open(new_path, 'w', encoding='utf-8') as f:

#    f.write(result)

# 电话和传真前面加上'\t',可以防止excel打开csv内容的时候自动计算

data = {}

for textin result:

if ':' in text:

itemname, value = text.split(":")

if '展位号' in itemname:

data['展位号'] = value

elif '地址' in itemname:

data['地址'] = value

elif '邮编' in itemname:

data['邮编'] = value

elif '电话' in itemname:

data['电话'] ='\t'+ value

elif '传真' in itemname:

data['传真'] ='\t'+ value

elif '联系人' in itemname:

data['联系人'] = value

elif '职务' in itemname:

data['职务'] = value

elif '电邮' in itemname:

data['电邮'] = value

elif '网址' in itemname:

data['网址'] = value

elif '业务性质' in itemname:

data['业务性质'] = value

elif '产品类型' in itemname:

data['产品类型'] = value

print(" Saving the data of %s" % file_path)

print(data)

Company_Data.append(data)

#3 get all .jpg under the path

def each_path(dir_path):

# get file names of current directory

file_name = os.listdir(dir_path)

for namein file_name:

if '.jpg' in name:

image_path = dir_path +'\\' + name

saveData(image_path)

def save2csv():

file_name ='test1.csv'

save = pandas.DataFrame(data=Company_Data, dtype='object')

try:

save.to_csv(file_name,quoting=1,float_format='str', mode='a+')

except UnicodeDecodeError:

print("编码错误,该数据无法写到文件中,直接忽略该数据")

if __name__ =='__main__':

file_path =r"F:\我的坚果云\其他\Study\Python\Demo\BaiduOcr\picture"

each_path(file_path)

save2csv()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chrome解决跨域(CORS)问题---chrome插件

1、chrome浏览器 chrome中跨域问题,可以安装插件解决, 插件地址 https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi 地址需要翻墙 翻墙hosts:https://laod.cn/hosts/2017-google-host…

我的女朋友漏电了–论C++中的失败(failure),缺陷(bug)和异常(exception)

先做个广告置入,如果喜欢这篇文章,你可以到 zhaoyan.website/blog 去查看于此类似的C/C文章。 我承认有点标题党了,不过这真的是一篇写软件的文章,所以如果你已经抽出了一张面巾纸,那么趁早再把它完美的放回去。这篇软…

SQLplus 和mysql区别_mysql和oracle的区别有哪些

MySQL和Oracle都是流行的关系数据库管理系统(RDBMS),在世界各地广泛使用;大多数数据库以类似的方式工作,但MySQL和Oracle的这里和那里总是存在一些差异的。本篇文章就给大家比较Oracle和MySQL,介绍Oracle和MySQL之间的区别&#x…

127.0.0.1与localhost的区别

2019独角兽企业重金招聘Python工程师标准>>> 区别1: localhost也叫local ,正确的解释是:本地服务器 127.0.0.1在windows等系统的正确解释是:本机地址(本机服务器) 他们的解析通过本机的host文件,windows自动将localhost解析为127.…

一个项目经理的贪嗔痴

我有时候在想,自己到底是一个什么角色?产品经理?还是一个项目经理?或者只是一个技术经理。 身边一些朋友说,自己想转行做一个产品经理,做一个伟大的产品。我奉劝他们说还是省省吧,在这样一个二三…

mysql 索引_MySQL之索引

索引查找算法BTREEBTREE查找算法演变B-TREE :普通 BTREE,平衡多路查找树(B-Tree)BTREE :叶子节点双向指针BTREE(B*TREE):枝节点的双向指针普通B-TREE增强版BTREE(B*TREE)总结:从上图看出,在BTree上有两个头…

2010年寒假学习心得

本人的博客园博客:http://www.cnblogs.com/zengmiaogen 博客园是我早期发表的博文。 ------------------------------------------ 1、心态要好,要相信自己能完成,不要担心自己完成不了,万事开头难,有挫折是正常的。…

利用5w1h写出高效的git commit

创建git commit 模板 创建模板 在个人目录下, 创建 .gitmessage vi .gitmessage 复制代码并输入以下信息 Who: Demand maker*When: versions affected*What:The content of the code changes* descrption: * wiki/task:Why:The reason*How:Influence of change* 复制…

python高维数据_t-SNE高维数据可视化(python)

t-SNE实践——sklearn教程t-SNE是一种集降维与可视化于一体的技术,它是基于SNE可视化的改进,解决了SNE在可视化后样本分布拥挤、边界不明显的特点,是目前最好的降维可视化手段。关于t-SNE的历史和原理详见从SNE到t-SNE再到LargeVis。代码见下…

java数学计算表达式_Java初学者:内建函数计算简单的数学表达式

这个应该在之前写的,忘记了,补上这次我们说一下如何用java计算数学表达式的值,比如,我们要计算sin(pi/3) cos(pi/6) 5.6^3,怎么计算呢?这里我们需要用到java的math的内建函数,所谓内建函数&am…

你是怎样的程序员?

一、程序员A 一个善于总结、能举一反三,敢于承担责任,敢于挑战自我,拥抱新技术的程序员,他的年龄意味着丰富经验,意味着效率。 他能指出并带人绕过一个一个技术大坑,笑看风云而不掉进去; 他能指…

谷歌新作gVisor:VM容器融合技术已经到来

作者|秦承刚,吴启翾,喻望,杨伟 编辑|张婵 出处丨高效开发运维 5 月 2 日,谷歌发布了一款新型的沙箱容器运行时 gVisor,号称能够为容器提供更安全的隔离,同时比 VM 更轻量。容器基于共…

安卓androidstudio访问本地接口_安卓开发之数据存储在本地的四种方式

​安卓开发之数据存储在本地的四种方式本地数据存储,在安卓开发过程中是不可避免的一个话题。这些本地的数据可能是用户的设置,程序的设置,用户的数据图片, 也可能是网络传输的一些缓冲数据。基本上我们有4种方法可以存储安卓程序的数据。第1…

java vector 线程安全_关于Vector到底是不是 线程安全的 问题

线程安全,在java的多并发编程中是重要概念,意思是,多个线程同时操作一个对象,在各种不同情况下,都不会造成不同的后果。一个经典问题,Vector到底是不是线程安全的?很多人都会回答,是…

TypeScript 2 : 获取当前日期及前后范围日期【Array】

原文链接:http://blog.csdn.net/crper/article/details/55194334 --------------------------------------------------- 前言 今天有个接口字段需求,要写一个今天及前几天的日期传过去; 在网上找了下都木有什么比较好的方案;就…

C# Winform使用Windows Media Player播放多媒体整理

一、简单使用示例步骤 1.添加Windows Media Player 组件当前是系统的 Com组件 工具箱》右键“选择项”》选择Com组件 2.控件拖拽到桌面,使用 private void button1_Click(object sender, EventArgs e) {//播放开始声音axWindowsMediaPlayer2.URL "start.mp3&q…

快学Scala习题解答—第一章 基础

原文链接:http://blog.csdn.net/ivan_pig/article/details/8249768 --------------------------------------------------------- 1 简介 近期对Scala比较感兴趣,买了本《快学scala》,感觉不错。比《Programming Scala:Tackle Multi-Core Complexity on…

java swing rectangle_Java SwingUtilities.convertRectangle方法代碼示例

本文整理匯總了Java中javax.swing.SwingUtilities.convertRectangle方法的典型用法代碼示例。如果您正苦於以下問題:Java SwingUtilities.convertRectangle方法的具體用法?Java SwingUtilities.convertRectangle怎麽用?Java SwingUtilities.c…

python 查询包_查找Python包的依赖包(语句)

Window 10家庭中文版,Python 3.6.4,今天看完了urllib3的官文(官方文档),因为没有具体使用过,所以,仍然是一知半解,但是,突然想知道 urllib3以及前面学习过的requests模块都依赖了什么其它模块。…

618选购手机正当时,好评率高达99%的手机了解一下!

一年一度的京东618年中购物狂欢节如火如荼的进行中,手机厂商们都使出了浑身解数,对消费者进行争夺。对于用户来说,618绝对是更换手机的好时机。不过,小伙伴们面对市场上的众多机型,也有可能挑花了眼,不知道…