大家好,这里是程序员晚枫,给大家分享一个好消息:我也成为PSF Member了!
PSF Member:Python软件基金会成员,是Python社区的重要组成部分,负责维护和发展Python语言及其相关项目。
同时我也加入了Python的简体中文翻译小组,未来大家看到的Python官方中文文档里,也许会看到我翻译的内容哟~
今天给大家讲讲我和Python的故事吧~
毕业以后这几年里,每次找工作面试,我都会被问一个问题:
你是法学院毕业的,为什么要转行做Python开发?
每次为了节省时间,我都会轻描淡写地回答:因为我喜欢Python,也喜欢编程。
幸好我回答完也基本没有面试官会继续深究了,不然我怕我刹不住车,滔滔不绝的讲下去,因为我转行的经历太艰难了!
我实习和刚开始工作用的还不是Python,是Java。哪怕是今天,想找一个纯Python开发的岗位也不容易。
虽然是程序员了,但我对自己的能力有几斤几两比较清楚:
与此同时,我的自媒体账号也梭哈Python主题,名字直接改成了:Python自动化办公社区,更新的频率也增加了。
但第一份工作的项目不是Python,我怎么积累经验呢?直接离职找下一家对于刚毕业的我来说不是最好的选择,正如上一篇文章写的:如果工作不是自己喜欢的,那就努力把它变成喜欢的。
我当时就利用一切下班的时间,用Python把Java项目基本重新写了一遍,然后给别人证明两者能实现同样的效果,而且Python的开发效率高很多。
还好当时的Java项目相对简单,还好当时的经理和同事都很开明,让我顺利得转向了Python开发,现在想想依然很感谢第一家公司。
工作2年之后,我裸辞离开了第1家公司,当时裸辞有1个很重要的原因:我的Python自媒体竟然意外的做起来了,而且收入连续半年超过了上班的工资。
我找到Python火出圈的原因后(这个原因也是我今年在Python中国大会分享的主题,现在依然还在持续存在着,扫码下图查看),直接在家办公的方式,远程组了一个自媒体小团队,全力搞了一段时间自媒体。
之所以写只搞了一段时间,是因为后来找不到方向了。把Python方面能写的文章、能录的课程都做了,收入没有本质的提高,不知道Python领域的流量和变现还能怎么玩。
现在回过头来看,那段时间的作品其实也挺差的,变现方法因为缺乏社会经验也挺原始的。及时收手是正确的选择。
自媒体的不如意,甚至让我对Python失去了斗志,我转头去找了一个前端纯JS开发的工作,干了1个月后让我更加深刻的认识了自己的能力水平:不要去挑战别人的饭碗,还是好好搞我已经有了2年开发经验的Python吧!
接下来这一份工作,接手维护了上一个工程师开发的Python Web项目,用的是flask框架,在网上学习这个框架的时候,了解到一位flask的核心开发者是中国人,而且还参与组织了Python中国大会(没想到后来和这个大会产生了那么多故事)。
也因为这段时间的学习,让我有了发布一个自己的开源项目的想法,同时重启自己的Python自媒体工作,于是就有了python-office这个项目。
又一次很幸运的,项目发布2个月就被gitee的运营同学看到,给我设为了推荐项目,并且一直到今天还在所在分类的热门榜单上。
并且因为这个项目的发布视频,让我B站拿到了10w+粉丝的小奖牌。
后来项目又陆续被渠成社区、GitCode收录,Star数量也分别上升到GitHub 960+,gitee 750+。
我好像对Python的热情又恢复了!
后面几年的工作技术难度都不大,但因为开源项目用户的需求很多,所以维护开源项目反而让我的Python技术进步了很多。
以下是部分我已经发布并且维护中的GitHub开源项目:
22年发布了开源项目:python-office
,23年认识了权哥,一起主办了Python中国(重庆站),第一次把这个大会引入重庆,也获得了西南大学开源社团的支持。
年尾的时候,针对python-office
这个开源项目,陆续发布了4套视频教程。
24年又去上海参加了Python中国大会,从一位已经是PSF Member的讲师那里知道如何成为PSF Member,于是就有了文章开头加入成功的好消息。
马上24年结束了,因为这样那样的原因,25年大概率本职工作不再从事Python开发了。
但推广Python的事情还会继续做:更新不同主题的Python课程,参加技术大会分享我眼里的Python技术,还会在开源项目上花费更多精力。
想来也很神奇,一位被国人称为‘龟叔’的荷兰人在90年代发明了一种计算机编程的语言(Python),20年后我接触到了他的这一项发明。
并且通过他的这一项发明进入了理论上和我没有瓜葛的程序员行业,赚到了钱能维持生存,收获了一些自媒体的粉丝和人生的成长。
打算继续通过自媒体的形式,在推广Python的路上走下去,不知道未来有无机会见到龟叔,给他讲讲更多关于我和Python的故事。
大家好,这里是程序员晚枫,上周刚给大家发布了一个功能:仅需1行代码,Excel秒变Markdown!
打算本周再增加更多文件转Markdown的功能,在检索实现方案的过程中,我突然发现:就在前几天,微软自己开源了一个工具:MarkItDown。
我竟然和微软想到一块去了??
微软开源的MarkItDown工具可以帮助你将多种文件格式转换为Markdown格式。
以下是如何使用MarkItDown的基本步骤:
你可以通过pip命令来安装MarkItDown:
1
pip install markitdown
或者从源码安装:
1
pip install -e .
MarkItDown需要Python 3.10或更高版本。你可以使用virtualenv或pipenv来创建和管理虚拟环境:
1
2
3
4
5
6
7
8
9# 使用virtualenv
virtualenv -p python3.10 env
source venv/bin/activate
pip install markitdown
# 使用pipenv
pipenv --python 3.10
pipenv shell
pipenv install markitdown
使用MarkItDown转换文件非常简单,首先你需要导入MarkItDown模块并创建一个实例,然后调用convert方法进行转换:
1
2
3
4from markitdown import MarkItDown
markitdown = MarkItDown()
result = markitdown.convert("python-office.xlsx")
print(result.text_content)
你可以转换多种文件类型,包括PDF、PowerPoint、Word、Excel等。
你可以直接从URL转换文件,或者处理HTTP响应:
1
2
3
4
5
6
7
8
9# 直接从URL转换
url_result = markitdown.convert("https://python-office.com/document.pdf")
print(url_result.text_content)
# 处理HTTP响应
import requests
response = requests.get("https://python-office.com/document")
response_result = markitdown.convert(response)
print(response_result.text_content)
如果你需要处理流式数据,可以使用convert_stream方法:
1
2
3with open("python-office.pdf", "rb") as f:
result = markitdown.convert_stream(f)
print(result.text_content)
MarkItDown还提供了命令行工具,支持多种输入方式:
1
2
3
4
5
6# 直接转换文件
markitdown python-office.pdf > output.md
# 通过管道输入
cat python-office.pdf | markitdown > output.md
# 通过重定向输入
markitdown < python-office.pdf > output.md
你可以自定义会话和模型,例如集成OpenAI等AI模型来处理图片描述:
1
2
3
4
5
6from markitdown import MarkItDown
from openai import OpenAI
client = OpenAI()
md = MarkItDown(mlm_client=client, mlm_model="gpt-4")
result = md.convert("python-office.jpg")
print(result.text_content)
以上是MarkItDown的基本使用方法,你可以根据需要选择合适的方式来转换文件。更多详细信息和高级用法,可以访问MarkItDown的GitHub仓库:https://github.com/microsoft/markitdown。
大家好,这里是程序员晚枫,上周刚给大家发布了一个功能:仅需1行代码,Excel秒变Markdown!
打算本周再增加更多文件转Markdown的功能,在检索实现方案的过程中,我突然发现:就在前几天,微软自己开源了一个工具:MarkItDown。
我竟然和微软想到一块去了??
微软开源的MarkItDown工具可以帮助你将多种文件格式转换为Markdown格式。
以下是如何使用MarkItDown的基本步骤:
你可以通过pip命令来安装MarkItDown:
1
pip install markitdown
或者从源码安装:
1
pip install -e .
MarkItDown需要Python 3.10或更高版本。你可以使用virtualenv或pipenv来创建和管理虚拟环境:
1
2
3
4
5
6
7
8
9# 使用virtualenv
virtualenv -p python3.10 env
source venv/bin/activate
pip install markitdown
# 使用pipenv
pipenv --python 3.10
pipenv shell
pipenv install markitdown
使用MarkItDown转换文件非常简单,首先你需要导入MarkItDown模块并创建一个实例,然后调用convert方法进行转换:
1
2
3
4from markitdown import MarkItDown
markitdown = MarkItDown()
result = markitdown.convert("python-office.xlsx")
print(result.text_content)
你可以转换多种文件类型,包括PDF、PowerPoint、Word、Excel等。
你可以直接从URL转换文件,或者处理HTTP响应:
1
2
3
4
5
6
7
8
9# 直接从URL转换
url_result = markitdown.convert("https://python-office.com/document.pdf")
print(url_result.text_content)
# 处理HTTP响应
import requests
response = requests.get("https://python-office.com/document")
response_result = markitdown.convert(response)
print(response_result.text_content)
如果你需要处理流式数据,可以使用convert_stream方法:
1
2
3with open("python-office.pdf", "rb") as f:
result = markitdown.convert_stream(f)
print(result.text_content)
MarkItDown还提供了命令行工具,支持多种输入方式:
1
2
3
4
5
6# 直接转换文件
markitdown python-office.pdf > output.md
# 通过管道输入
cat python-office.pdf | markitdown > output.md
# 通过重定向输入
markitdown < python-office.pdf > output.md
你可以自定义会话和模型,例如集成OpenAI等AI模型来处理图片描述:
1
2
3
4
5
6from markitdown import MarkItDown
from openai import OpenAI
client = OpenAI()
md = MarkItDown(mlm_client=client, mlm_model="gpt-4")
result = md.convert("python-office.jpg")
print(result.text_content)
以上是MarkItDown的基本使用方法,你可以根据需要选择合适的方式来转换文件。更多详细信息和高级用法,可以访问MarkItDown的GitHub仓库:https://github.com/microsoft/markitdown。
大家好,这里是程序员晚枫,今天给大家带来一个腾讯云的新功能:智能结构化识别(Pro版)。
智能结构化(Smart Structure Optical Character Recognition )融合了业界领先的深度学习技术、图像检测技术以及OCR大模型能力,能够实现不限版式的结构化信息抽取。无论是固定卡证还是复杂的物流单据,均可实现智能识别。该产品预学习建立键值对应关系,支持客户定制模板,提升数据提取录入效率,适用于政务、票据核销、行业表单和国际物流等场景。
提起OCR,大家可能相对陌生,我先给大家解释一下这个东西有什么用:
专业的解释:OCR(Optical Character Recognition),即光学字符识别。
好吧,这个解释也非常的抽象。
再来一个通俗的解释:它是一种将图片中的文字提取出来,保存为可编辑文本的技术。
举例来说,我们之前给大家分享过的:发票识别、车牌识别、银行卡识别等,都属于OCR的一种。
但体验过的朋友都知道,这些识别的通用性不强:它们都是针对标准模板文件的识别,比如用来识别身份证的软件/程序,拿去识别车牌号就不准确了,
那有没有一种通用的程序,用同一套软件,可以识别所有常见的卡/证,甚至从一些没有规律的图片立提取文字呢?
最近我发现腾讯云推出了智能识别Pro版本,做到了这一点!这就是本篇文章要给大家分享的内容。
使用这个ocr功能,需要安装一个python库:potx-cloud。
安装也很简单,在有python环境的电脑上,只需要执行下面这一行命令,就可以自动下载和安装了。
1 | pip install potx-cloud |
这个库内置了智能结构化的接口,可以通过1行代码直接调用。
为了让大家更好的理解,本文会通过用腾讯云智能OCR,实现1行Python代码识别手写发票,来带大家体验一下这个功能:
直接上代码!
1 | import potx |
运行以上代码,就可以得到识别结果了。
后续会增加以下功能:
大家在使用过程中有任何问题或者新的需求,请在评论区留言,我会尽快回复。
最后,抢先免费体验全部功能,请点击:智能结构化OCR
大家好,这里是程序员晚枫,2024年的最后一个月,过得有点潦草了。
从10月得到可以内部换岗位的机会这个消息,我就迫不及待的换去新部门了,哪怕降薪,哪怕换一个赛道。
抛开为了更好的职场发展这种骗鬼的理由,最核心的原因有2个:
我刚来部门不到半年,就因为做自媒体被同事举报了,除了现在想起来依然恶心,不想再花更多的时间吐槽了。
举几个例子:
有一次和同事讨论新技术,同事的回答是:我不关心,我都来重庆了,我还关心啥新技术,不属于我这个世界。
再有一次一个同事负责的项目代码有问题,讨论了半天,我才发现他根本就没看过代码。这个所谓开发负责人的职责就是:写报告和猜上级领导心思。
还有一件哭笑不得的事:因为我做的项目多,所以代码写的多。每天加班不断的结果还是差绩效,给我打绩效的人也完全不懂代码,我试着问了一句为什么绩效差,给我一个理由:代码出了问题。。。我听到后直接放弃沟通。
所以在我们部门,少干活,尤其是少干写代码的活,也就会少犯错,反而会有更好的绩效。
于是比起写代码,大家都更想去做项目管理、去开会、去互相pua。即使是分配了代码开发的工作,也宁愿充傻装愣,逼着其他人或者领导另外找人承担下开发的工作,这种技术氛围让我感到窒息。
也许在国企里使用这种生存智慧,他们都没错,错在我去过互联网公司,错在我体验过纯粹的技术开发团队的乐趣。
更错在我是因为喜欢技术,所以从法学院毕业后转行程序员的。如果不是因为对技术有执念,我就不会对技术部门有这种美好的期待,也能发挥我在法学院学会的技能:写报告拍马屁、慷慨激昂地推卸责任。
毕竟提起写作和辩论,这帮搞技术的比起法学院那帮同学,有点不够看了。但我觉得浪费生命。
因为我不觉得工作就是混口饭吃,可以随波逐流,不认真投入。我从内心里很认真的对待工作,实际我也一直是这么做的,哪怕给我一个很差的绩效。我觉得努力工作的意义,就是为了能做自己想做的事情,如果目前不是,那就把它变成喜欢的。
所以我开始看其它工作机会了,除了公司内部的,外部的我也在看,遇上合适的机会,年终奖我也可以不要了。
最近一个月自媒体更新的也少了许多。
9月份阿里云邀请我去参加了一次云栖大会,给我震撼最大的是同行的自媒体人真的太优秀了!!
同样是拍vlog,我们一起逛展,用同样的素材,结果剪辑出来效果甩我几条街我不知道,反正播放量甩我十万+。
同样是做技术博主,我只会照着大会给的通稿念,人家的视频里旁征博引/生动有趣,而且带货的方式也恰到好处,我看了都想赶紧下单。
回来后,我就一直在想一个问题:
过去的5年里,我每天的自媒体工作就是研究热门技术话题、职场话题,然后缝合各个大V的文章/视频,拼凑出一篇内容发布,做了大量的低质输出。结果也符合预期:我得到了流量,得到了收入,但其实我的动作已经变形了。
刚开始我怕账号做不起来为了流量而做,后来怕赚不到钱又为了赚钱而做,现在我想为了内容而做。
经过这几年的尝试,我发现我想要的自媒体也很简单:
还好,仔细想想,前2点我也不是不能学着去做。
至于最后1点,等我再坚持一段时间看看大家的反馈就知道了?
大家好,这里是程序员晚枫,今天给大家带来一个腾讯云的新功能:智能结构化识别。
为了让大家更好的理解,本文会通过一个案例,来介绍一下这个功能:用腾讯云智能OCR,实现1行Python代码识别手写发票。
之前给大家分享过普通的OCR功能,例如:识别发票、识别车牌、识别银行卡等。
以上识别,都是针对标准模板文件的识别,换一个模板就不准确了,为了解决这种问题,最近我发现腾讯云又推出了智能识别,更加好用了!
安装很简单,在有python环境的电脑上,只需要执行下面这一行命令。
1 | pip install potx-cloud |
通过上面的命令,就可以安装好这个库了。
这个库内置了智能结构化的接口,可以通过1行代码直接调用。
直接上代码!
1 | import potx |
运行以上代码,就可以得到识别结果了。
全部功能:智能结构化OCR,点我直达
智能结构化(Smart Structure Optical Character Recognition )融合了业界领先的深度学习技术、图像检测技术以及OCR大模型能力,能够实现不限版式的结构化信息抽取。无论是固定卡证还是复杂的物流单据,均可实现智能识别。该产品预学习建立键值对应关系,支持客户定制模板,提升数据提取录入效率,适用于政务、票据核销、行业表单和国际物流等场景。
大家好,这里是程序员晚枫,今天给大家分享一个刚刚修复的新鲜Bug:有关PDF转Word功能的报错。
Bug来自我们的一位用户,他用的是arm架构的Mac电脑,Parallels Desktop虚拟机里是win11系统。
在运行代码的时候报错以下内容:
[ERROR] Ignore page 2 due to making page error: invalid literal for int() with base 16: ‘xc’
我远程给他看了一个多小时,也没找到原因。
我十分纳闷:我上次更新的版本里,没动这个功能的代码,当时的单元测试也都通过了呀,怎么突然就不能用了呢?
因为这个功能的实现依赖的是pdf2docx这个库,既然我的代码没动过,那是不是它的代码升级导致的?
果然!
在GitHub的issue里,有一位同学提出了相同的问题,并且给出了解决方案。
于是我在popdf的依赖中,指定了这个版本,就解决了这个问题。
如果大家也出现了这个问题,直接在自己的电脑升级一下popdf的版本就可以了,命令如下:
1 | pip install popdf -U |
如果你喜欢以上这些开源项目,欢迎加入我们的开源小组,一起交流学习,一起进步。
加我的微信:hdylw1024,备注:开源
关于项目的介绍:
大家好,这里是程序员晚枫。
和大家一样,每次听到写文档,我都很头疼。
所以我就想,能不能用大模型来写文档呢?
正好我最近正在迭代python-office这个开源项目,其中一个子项目:popdf的代码注释和项目文档,我就全部用大模型来写了。
其中大模型我用的是:MarsCode编程助手。
我开发Python处理文档的开源项目:python-office有5年的时间了,但是因为懒,文档这方面一直做得不好。
然而这个项目主要是给小白用的,所以文档又非常的重要。
所以我这次打算给每个功能都写一篇文档,让大家可以按需使用。
首先在vscode里安装MarsCode编程助手插件。
然后,在插件里输入以下命令:
根据python-office的代码仓库:https://github.com/CoderWanFeng/python-office,给我写一个python-office项目的popdf模块的文档。
接下来就是复制粘贴,然后修改细节。
但是在修改的过程中,MarsCode会给你提供文档补全的功能,这大大提高了我的工作效率。
最后,我把这个项目的文档全部生成完毕,效果非常不错。
可以看到,我用MarsCode来写文档,比我自己写要快很多。
我还把这个项目的文档放到了gitee上,大家可以直接下载使用。
技术人更关注技术实现的细节,但是写文档对一个项目来说,也是非常重要的任务。
对于一些重复性的描述,完全可以交给大模型来实现。
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true