python提取图片内容并转换成对应表格的markdown代码
本节我们将介绍使用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|']
看看文件内容。

看看渲染结果:

结果还不错,当然我们并没有训练样本,所以对于稍微复杂一点的图片,可能识别结果就不好了。
之后我以这个为基础,写一个带GUI的程序,界面如下:

完整带GUI程序的github仓库地址。
python提取图片内容并转换成对应表格的markdown代码的更多相关文章
- 如何将WORD表格转换成EXCEL表格
		WORD和EXCEL都可以制作表格,但WORD表格与EXCEL表格之间有着很明显的差距,所以在办公中经常会需要将WORD转换成EXCEL,今天小编就教大家一招将WORD表格转换成EXCEL表格. 操作 ... 
- 用Python将word文件转换成html(转)
		用Python将word文件转换成html 序 最近公司一个客户大大购买了一堆医疗健康方面的科普文章,希望能放到我们正在开发的健康档案管理软件上.客户大大说,要智能推送!要掌握节奏!要深度学习!要 ... 
- 怎样将PDF文件转换成Excel表格
		PDF文件怎样转换成Excel表格呢?因为很多的数据信息现在都是通过PDF文件进行传输的,所以很多时候,信息的接受者都需要将这些PDF文件所传输的数据信息转换成Excel表格来进行整理,但是我们应该怎 ... 
- PDF文件转换成Excel表格的操作技巧
		我们都知道2007以上版本的Office文档,是可以直接将文档转存为PDF格式文档的.那么反过来,PDF文档可以转换成其他格式的文档吗?这是大家都比较好奇的话题.如果可以以其他格式进行保存,就可以极大 ... 
- 使用python将ppm格式转换成jpg【转】
		转自:http://blog.csdn.net/hitbeauty/article/details/48465017 最近有个很火的文章,叫 有没有一段代码,让你觉得人类的智慧也可以璀璨无比? 自己试 ... 
- python入门:UTF-8转换成GBK编码
		#!/usr/bin/env python # -*- coding:utf-8 -*- #UTF-8转换成GBK编码 #temp(临时雇员,译音:泰坡) #decode(编码,译音:迪口德) #en ... 
- ExcelToHtmlTable转换算法:将Excel转换成Html表格并展示(项目源码+详细注释+项目截图)
		功能概述 Excel2HtmlTable的主要功能就是把Excel的内容以表格的方式,展现在页面中.Excel的多个Sheet对应页面的多个Tab选项卡.转换算法的难点在于,如何处理行列合并,将Exc ... 
- 办公室文员必备python神器,将PDF文件表格转换成excel表格!
		[阅读全文] 第三方库说明 # PDF读取第三方库 import pdfplumber # DataFrame 数据结果处理 import pandas as pd 初始化DataFrame数据对象 ... 
- SnowNLP:•中文分词•词性标准•提取文本摘要,•提取文本关键词,•转换成拼音•繁体转简体的 处理中文文本的Python3 类库
		SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和Te ... 
随机推荐
- hadoop中两种上传文件方式
			记录如何将本地文件上传至HDFS中 前提是已经启动了hadoop成功(nodedate都成功启动) ①先切换到HDFS用户 ②创建一个user件夹 bin/hdfs dfs -mkdir /user ... 
- Dynamics email的subject标题出现 CRM:0000xxxx
			怎样移除email subject标题中出现的CRM:0000xxxx Settings->Administration->System Settings->Email->Un ... 
- STM8上电默认电平不对的解决
			首先,手册上说的是对的,STM8/32上电后所有未被初始化的引脚电平全部是浮空的.但是我的程序却出现了一个奇怪的现象 void main(void){ init();//这里初始化时钟,IO ... ... 
- Spring5.x源码分析 | 从踩坑到放弃之环境搭建
			Spring5.x源码分析--从踩坑到放弃之环境搭建 前言 自从Spring发行4.x后,很久没去好好看过Spring源码了,加上最近半年工作都是偏管理和参与设计为主,在技术细节上或多或少有点疏忽,最 ... 
- 惠普电脑win10关闭自动调节亮度
			自动调节亮度真的太烦人了,突然从亮的画面变暗,又从暗的亮度变量,眼睛受不了.但是试了很多种方法都不行. 方法 第一种: 有一些电脑是有在设置--->显示界面--->有一个 关闭自动调节 按 ... 
- pyhon学习Day18--继承
			[知识点] 面向对象的三大特性:继承.多态.封装 [继承] (1)继承:class Person(Animal): ——括号里的:父类,基类,超类 括号外的:子类,派生类 class Animal ... 
- MySql新版本安装配置
			版本:mysql-5.7.16-winx64 平台Windows 7 x64 1.进入mysql主目录(建议将其移到C或D盘的根目录,并改名为mysql) 2.配置path环境变量(如D:\JAVA\ ... 
- CLion在项目里编译不同文件
			1. 在完整的项目下找到CMakeList.txt(项目配置文件) 2. Build 和 Run的目标在add_executable参数中 3. 将其修改为如下格式:add_executable(pr ... 
- MingGW Posix VS Win32 - 明瓜娃的毒因
			MinGW-posix和win32纠缠的瓜娃子 官方首席佛偈(SourceForge)的官网下载页 法克油啊,让我一个小白情何以堪. 盘TA wiki posix wiki中文-UNIX API标准 ... 
- Thread.yield( )方法
			Java线程中的Thread.yield( )方法,译为线程让步.顾名思义,就是说当一个线程使用了这个方法之后,它就会把自己CPU执行的时间让掉,让自己或者其它的线程运行,注意是让自己或者其他线程运行 ... 
