本节我们将介绍使用python识别一张图片中的内容,并试着得到一张表格,当然并不是类似于Excel的表格,而是该表格的markdown代码。

注:原创内容,转载请标明出处!

相关工具的安装

本次实验环境:win10,Pycharm2019.3。

安装相关库既可以使用命令行,也可以使用Pycharm自带的工具。

打开cmd命令行或者powershell。

首先安装PIL:

pip install Pillow

这是已经安装好PIL的示意图。

之后,安装pytesseract:

pip install pytesseract

这是已经安装好pytesseract的示意图。

接下来,安装Tesseract-OCR,注意对应系统。

环境配置,输入

tesseract

tesseract -v

如果正常输出,表示配置成功了(我在实际操作时,安装完成后自动配置了系统变量),如果没有,找到之前安装的路径:

例如:

G:\Program Files (x86)\Tesseract-OCR

将该路径添加到系统变量中

如果你想做英文之外的识别,Tesseract-OCR是没有带其他语言包的,你可以去下载其他语言包。

这里我添加了简体中文的语言包,但是使用的是自带的英文语言包。

同时,我们还需要一项配置,找到python安装路径下的pytesseract.py,我这里的路径是

G:\Python37\Lib\site-packages\pytesseract

打开该路径下的pytesseract.py文件。

将其中的

tesseract_cmd = tesseract.exe

替换为你之前安装Tesseract-OCR的路径。

tesseract_cmd = 'G:/Program Files (x86)/Tesseract-OCR/tesseract.exe'

简单测试

这是一张图:

先简单演示一下:

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

from PIL import Image

import pytesseract

# 注意图片路径和名称

path = "3.jpg"

# lang参数指定了语言包,你可以下载相应的语言包,这里使用自带的英文包

content = pytesseract.image_to_string(Image.open(path), lang="eng")

print(content)

由于数据有些多,我只列出一部分。

90

70

50

40

130

70

90

20

120

110

100

30

...

70

60

80

60

80

60

50

50

60

60

60

60

这里呢,我们的工作就完成了大部分了,接下来我们试着将它转换一个对应表格的markdown代码。

转换

我们得到的结果是一个字符串,离我们实际的表格内容还有一段距离,也不难,做些数据处理就可以了。

markdown表格的语法:

| 左对齐 | 居中对齐 | 右对齐 |

| :-----| :----: | ----: |

| 内容 | 内容 | 内容 |

| 内容 | 内容 | 内容 |

这里直接上程序了:

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

from PIL import Image

import pytesseract

path = "3.jpg"

text = pytesseract.image_to_string(Image.open(path), lang="eng")

text_list = text.split()

rows = 12

lists = 6

md_text = []

list_name = ["语文", "数学", "英语", "物理", "化学", "生物"]

md_text.append(["|"])

for name in list_name:

md_text[0].append(str(name) + "|")

md_text[0] = "".join(md_text[0])

direction = ["中", "中", "中", "中", "中", "中"]

md_text.append(["|"])

for d in direction:

if str(d) == "左":

md_text[1].append(":----|")

if str(d) == "中":

md_text[1].append(":----:|")

if str(d) == "右":

md_text[1].append("----:|")

md_text[1] = "".join(md_text[1])

for r in range(rows):

res = "|"

for l in range(lists):

res += (text_list[r + l * rows] + "|")

md_text.append(res)

file = open("3.txt", "w")

for m in md_text:

file.write(m + "\n")

file.close()

print(md_text)

结果:

['|语文|数学|英语|物理|化学|生物|', '|:----:|:----:|:----:|:----:|:----:|:----:|', '|90|120|130|100|80|70|', '|70|110|110|60|60|60|', '|50|40|120|90|80|80|', '|40|60|100|70|60|60|', '|130|90|90|80|80|80|', '|70|50|90|60|60|60|', '|90|70|140|50|50|50|', '|20|140|100|90|70|50|', '|120|130|80|60|60|60|', '|110|90|60|50|70|60|', '|100|70|50|90|90|60|', '|30|100|50|80|80|60|']

看看文件内容。

看看渲染结果:

![](https://img2018.cnblogs.com/blog/1950846/202002/1950846-20200226165418182-1409409454.png)

结果还不错,当然我们并没有训练样本,所以对于稍微复杂一点的图片,可能识别结果就不好了。

之后我以这个为基础,写一个带GUI的程序,界面如下:

完整带GUI程序的github仓库地址。

python图片表格转excel表格_python提取图片内容并转换成对应表格的markdown代码相关推荐

  1. python 数字转化excel行列_Python 3 实现数字转换成Excel列名(10进制到26进制的转换函数)...

    背景: 最近在看一些Python爬虫的相关知识,讲爬取的一些数据写入到Excel表中,当时当列的数目不确定的情况下,如何通过遍历的方式讲爬取的数据写入到Excel中. 开发环境: Python 3  ...

  2. python html转word文档_Python实现将HTML转换成doc格式文件的方法示例

    本文实例讲述了Python实现将HTML转换成doc格式文件的方法.分享给大家供大家参考,具体如下: 网页上的一些文章,因为有格式的原因,它们在网页上的源码都是带有html标签的,用css来进行描述. ...

  3. ExcelToHtmlTable转换算法:将Excel转换成Html表格并展示(项目源码+详细注释+项目截图)...

    功能概述 Excel2HtmlTable的主要功能就是把Excel的内容以表格的方式,展现在页面中. Excel的多个Sheet对应页面的多个Tab选项卡. 转换算法的难点在于,如何处理行列合并,将E ...

  4. 如何将wps转换成html单元格内的图案还保留,如何利用WPS将网络数据转为表格 Excel批量转为Html,Html转换成Excel...

    延伸:Excel批量转为Html,Html转换成Excel 描述:...过程中会将Html直接在Excel中打开,这种方式可能会导致Excel中的网线格无法正常显示出来.Excel转为Html格式上面 ...

  5. 将EXCEL表格转换成CAD表格的完整代码

    是将EXCEL表格转换成CAD表格的完整代码,包括文字和表格的转换,有兴趣的朋友可以试用一下,欢迎提出宝贵意见,相互交流. 请将下列代码粘贴到记事本中,另存为"FormETC.frm&quo ...

  6. 纸质版表格怎么转换成电子版表格

    要将纸质版表格转换成电子版表格,可以使用以下步骤: 1.准备一台物理扫描仪并与电脑连接好,并安装好驱动. 2.打开安装好的金鸣表格文字识别电脑客户端. 3.点击"扫描文件",在弹出 ...

  7. 多个html文件转换为excel,如何Excel批量转为Html或者Html转换成Excel

    在工作中时常遇到转换的问题,这也是很正常的事.那么需要将Exce表格批量转为Html,或者将Html转换成Excel表格.以下是小编为您带来的关于Excel批量转为Html或者Html转换成Excel ...

  8. 如何利用python将NWPU VHR-10目标检测遥感数据集的格式转换成VOC目标检测数据集的格式

    VOC目标检测数据集的格式 其中图片存放在JPEGImages文件夹中,标注是xml文件,存储在Annotations文件中 关于train集和val集的txt划分存放在ImageSets文件夹下面的 ...

  9. EXCEL数字前补零且转换成文本型

    EXCEL数字前补零且转换成文本型 方法一.使用公式="0"&A2,只能根据需要补零: 方法二.使用公式=REPT(0,8-LEN(A2))&A2,  自动为数值补 ...

  10. EXCEL中用TEXT函数将文本转换成日期

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! EXCE ...

最新文章

  1. vmstart的用法
  2. 数据结构与算法:07 Leetcode同步练习(二)
  3. 路由器DHCP,单臂路由配置
  4. spring 导出csv_Spring批处理CSV处理
  5. VMware连续三年获评Gartner广域网边缘基础设施魔力象限领导者
  6. 恢复html的初始选定状态,jQuery实现点击旋转,再点击恢复初始状态动画效果示例...
  7. mysql关键字及其用法_mysql的优化-explain
  8. 招生网上报名程序090512.rar
  9. mysql8.0.11-1 修改密码报错
  10. cnpack转换dfm文件
  11. python 直方图匹配_直方图匹配原理与python、matlab实现
  12. 关于Django响应速度慢的问题
  13. 手机浏览器能上网微信无法连接服务器,苹果手机微信可以上网浏览器不能
  14. JAVA计算机毕业设计的问卷调查系统设计与实现源码+数据库+系统+lw文档
  15. 深圳APP开发共享汽车APP
  16. 基于qiankun.js的微前端应用实战
  17. vant框架的输入框在IOS上出现输入空格不显示,需要在输入字符才展示问题
  18. 使用随机森林填补缺失值
  19. localparam,parameter,define区别
  20. DataView详解

热门文章

  1. 惠普136w耗材贵吗_说说打印机选购经验 的第十台打印机 HP Laser 136w
  2. 北上广深不相信电单车 共享单车终究走向“死“胡同?
  3. 电脑只能登录微信?但却打不开网页?不能上网怎么办?ip地址和DNS出问题了无法上网怎么办?
  4. python怎样分析文献综述怎么写_如何写文献综述?
  5. np.array_split()np.split()
  6. UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xae in position解决办法
  7. 算法:统计n以内素数个数--埃筛法
  8. html实现自动图片轮播,图片轮播的实现(html__js)
  9. 如何使用github上传代码
  10. java虚拟机启动失败_Eclipse 启动提示java虚拟机启动失败