python画统计图怎么在右上角表示哪条线代表什么_python-从图像中提取统计信息/信息...

这篇博客介绍了如何利用Python的pytesseract库和PIL库解析含有图表的图片,特别是针对法语文本的识别。首先,安装必要的依赖,然后通过pytesseract将图像转换为字符串。接着,通过正则表达式处理字符串,提取x轴和y轴的标签及数据,最终得到结构化的信息列表。如果所有图像格式一致,这个方法能有效地解析图像中的数据。
摘要由CSDN通过智能技术生成

如果生成图的原始代码不可用,请安装tesseract,然后安装PIL和pytesseract.

sudo apt-get install tesseract-ocr

sudo -H pip3 install pillow pytesseract

您可能还想要download the French datafiles并将它们放在/usr/share / tesseract-ocr / tessdata中.

我将您的图像保存为chart.png,然后编写了以下代码.

import pytesseract

from PIL import Image

img = Image.open('chart.png')

print(pytesseract.image_to_string(Image.open('chart.png'),lang='fra'))

这是输出.

Ch?teau d’AzayflefRideau

Ch?teau et musée de Blois

Ch?teau des Bau>?d?Provence

Crypte archéologique de Notr?Dame

Thé?tre antique et musée d’Orange

Ch?teau d’Angers

Ch?teau des ducs de Bretagne, musée

d'histoire de Nantes

281

271

258

223

197

184

180

2 000

4 000 6 000 8 000

Number of V|s|tors ln thousands

10 000

12

如果您所有的图像都遵循完全相同的格式,那么现在我们要做的就是使其具有可读性.

import pytesseract

from PIL import Image

import re

img = Image.open('chart.png')

s = pytesseract.image_to_string(img,lang='fra')

y_axis = s.split('

')

y_axis = [x for x in s if x.isdigit()]

x_axis = s.split('

')

x_axis = [x for x in x_axis if x[0].isalpha()]

x_axis = '

'.join(x_axis)

x_axis = re.split('(

[A-Z])',x_axis)

x_axis = [x_axis[0]] + [ ''.join(x) for x in zip(x_axis[1:][0::2],x_axis[1:][1::2]) ]

x_axis = [x.rstrip('

') for x in x_axis]

x_axis = [x.lstrip('

') for x in x_axis]

x_axis = [ re.sub('

',' ',x) for x in x_axis]

y_axis = y_axis[0:len(x_axis)]

result = list(zip(x_axis,y_axis))

print(result)

现在您有了:

[(‘Ch?teau d’AzayflefRideau’, ‘281’), (‘Ch?teau et musée de Blois’,

‘271’), (‘Ch?teau des Bau>?d?Provence’, ‘258’), (‘Crypte archéologique

de Notr?Dame’, ‘223’), (‘Thé?tre antique et musée d’Orange’, ‘197’),

(‘Ch?teau d’Angers’, ‘184’), (“Ch?teau des ducs de Bretagne, musée

d’histoire de Nantes”, ‘180’)]

如果在将图像传递给pytesseract之前将图像一分为二,则此代码可以变得更简单(一个用于左侧的标签,另一个用于条形和数字).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值