代码的使用案例,主要是给到做数据分析的小伙伴使用,因为日常中我们从平台获取的数据,可能是图片也可能由于截取图片比较方便,但是做分析,需要转化文本,再从文本中进行自然语言处理,所以图片转文本是第一步。希望该文章对你有帮助~~~
图片获取
import os
def get_img_file(file_name):
imagelist = []
for parent, dirnames, filenames in os.walk(file_name):
for filename in filenames:
if filename.lower().endswith(
('.png', '.jpg')):
imagelist.append(os.path.join(parent, filename))
return imagelist
- os.walk 可以遍历文件夹所有的文件,具体使用方法可以:https://www.runoob.com/python/os-walk.html
- 若是并非所有文件都是目标文件,可以根据需要自行选择,案例中通过后缀的方式进行限制 filename.lower().endswith()是将文件夹名词进行全部小写之后再根据后缀判断
- 最后的存储对象是以列表的形式输出
图片转化为文本
from cnocr import CnOcr
ocr = CnOcr()
'图片解析成文本'
def picture_ocr(image_name):
result_ocr = ocr.ocr(image_name)
text = ''
for list_text in result_ocr:
text = text + list_text['text'] + '\n'
return text
- 进行下载安装CnOcr,有很大概率会出错,包括网络不行或者其他原因,可以通过安装包下载的方式进行内容替换。若是要找到对应文件夹的位置,可以先试着运行ocr= CnOcr(),会告知哪些文件夹错误,安装教程https://cnocr.readthedocs.io/zh/latest/install/,安装包可以到GITHUB寻找
- 内容:会把识别的所有内容都输出,需要根据需要进行数据处理,比如案例中我是获取到文本之后进行合并字符串,并通过转行符进行数据格式调整。
识别结果存储
import pandas as pd
def data(file):
name = ['one']
data_all = {}
result = pd.DataFrame(data_all, columns=name)
iamge_list = get_img_file(file)
for image in iamge_list:
da = picture_ocr(image)
result.loc[len(result.index)] = [da]
return result
- 案例中是采用pd.DataFrame()进行内容存储,为了方便后面进行excel 存储
- pd.DataFrame()初始化是需要先设置列字段,但是可以用一个空的字典
- 行列都可以根据需要进行新增,案例是新增行result.loc[len(result.index)] = [da]
主函数
if __name__ == '__main__':
over=data(文件夹路径)
over.to_csv("./over.csv", index=False)