- 博客(238)
- 资源 (1)
- 收藏
- 关注
原创 解析PDF文件中的图片为文本
解析PDF文件中的图片,由两种思路,一种是自己读取PDF文件中的图片,然后用OCR解析,例如:使用PyMuPDF读取pdf文件,再用PaddleOCR或者Tesseract-OCR识别文字。另一种使用第三方框架,直接读取文字,例如:OCRmyPDF。读取pdf的包PyMuPDF可以获取PDF中的文本、布局和图片等,并且内嵌了Tesseract-OCR需要独立安装Tesseract项目的tessdata,有兴趣可以试试。
2024-06-23 22:18:50
789
原创 Docker Swarm持久化
Docker Swarm持久化有bind、volume和NFS三种方式,bind和volume两种方式适合挂载单个宿主机,不适合集群;NFS适合集群服务,但需要安装NFS系统。注意:Docker Swarm需要先安装集群。由Docker Swarm构建的集群,使用filebrowser测试。注意:使用搭建filebrowser集群过程中,会发现刷新一次就要登录一次,因为构建的集群中每个容器副本登录都是独立的,但是集群中设置了负载均衡,所以,每刷新一次访问的容器副本不一样,导致刷新一次会登录一次。
2024-06-10 11:51:14
685
1
原创 Python实现半双工的实时通信SSE(Server-Sent Events)
实现实时通信一般有WebSocket、Socket.IO和SSE(Server-Sent Events)三种方法。WebSocket和Socket.IO是全双工的实时双向通信技术,适合用于聊天和会话等,但相对于SSE比较笨重,SSE适合用于服务器主动向客户端实时推送数据,例如:用于大模型实时对话。WebSocket是一种HTML5提供的全双工通信协议,它基于TCP在客户端和服务器之间建立持久性的连接,实现两者之间实时双向数据通信。
2024-06-08 10:38:05
517
1
原创 基于大模型和RAG技术实现的开源项目
为解决大模型的不足,使用RAG技术增强大模型生成内容的针对性和可读性能力,有很多不错的开源项目。例如下面的项目。
2024-05-26 20:53:28
1134
原创 搭建CMS系统
内容管理系统(Content Management System,CMS)是一种用于管理、发布和修改网站内容的系统。开源的CMS系统有WordPress、帝国CMS等,国产的Halo很不错。WordPress参考地址Halo参考地址。
2024-05-26 09:45:06
490
原创 Qdrant向量数据库的使用
Qdrant(读作:quadrant)是一个矢量相似性搜索引擎和矢量数据库。它提供了一个方便的API来存储、搜索和管理点向量的生产就绪服务,并提供了额外的有效负载专门用于扩展过滤支持。这使得在各种神经网络或基于语义的匹配、多面搜索和其他应用方面更加有用。Qdrant要比Weaviate向量库好用。
2024-05-20 20:53:26
1315
原创 简单使用ollama
Ollama是一个开源的大型语言模型部署工具,它可以帮助用户快速在本地部署运行大模型。类似于Docker一样,仅仅用几行命令就可以运行一个大模型。
2024-05-19 22:08:47
686
原创 使用weaviate实现向量存储
当下开源的向量数据库比较多,主要分嵌入式向量数据库(数据库和应用在一起)和客户端-服务器模型向量数据库(客户端和服务器分离),比较出名数据库如下:嵌入式包括Chroma、lancedb,客户端和服务器分离的包括:Milvus、Faiss、Qdrant和Weaviate等。本文选择Weaviate。Weaviate是一个人工智能原生矢量数据库,强调与知识图的灵活高效交互,支持单节点和集群部署,支持关键词检索和语义检索。
2024-05-19 21:17:21
1003
原创 使用docker安装doccano
数据标注的工具比较多,比较出名的有Doccano、Label Studio等。Label Studio :图像标注、文本标注、音频标注、视频标注、时间序列标注,功能比较多。Doccano:主要是针对文本的标注,包括文本分类,序列标注和序列到序列的标注等功能。参考地址。
2024-05-16 13:49:07
378
原创 Python使用ThreadPoolExecutor线程池和Queue消息队列
concurrent.futures模块是从 Python3.2 后引入的异步执行模块,主要用于在多核CPU和网络I/O中进行高效的并发编程。这个模块提供了ThreadPoolExecutor(线程池)和ProcessPoolExecutor(进程池)两个类。可使用直接创建线程池,需要设置最大的线程数,用submit()执行线程。Python中的Queue是线程安全的消息队列,put()和get()配合使用,可使用put()创建消息,使用get()消费消息,使用qsize()获取消息长度。
2024-05-15 13:43:54
425
1
原创 使用BGE-M3和K近邻实现语义搜索
随着大模型和 检索增强生成(Retrieval-augmented Generation, RAG)不断的发展,文本语义检索很重要。文本语义检索离不开文本向量生成,在文本向量生成上面有几个比较好的模型,例如:北京智源人工智能研究院构建的BGE(BAAI General Embedding)、北京希瑞亚斯科技有限公司构建的M3E(Moka Massive Mixed Embedding)、SentenceTransformers可以实现文本的句子、段落的向量化,也可实现图片的向量化。
2024-05-12 17:34:10
484
原创 使用docker安装seafile
Seafile 是一款开源的企业云盘,支持全平台(浏览器、Windows、Mac、Linux、Android、IPhone等)客户端。Seafile 内置协同文档 SeaDoc ,让协作撰写、管理和发布文档更便捷。最重要的这是国产软件!用起来感觉比NextCloud要好一点。
2024-05-12 11:56:38
918
2
原创 Python线程终止方法
Python线程终止有很多思路,本文介绍使用事件终止、状态终止和异常终止3种思路。事件终止和状态终止必须等待耗时任务结束后才能结束,异常终止可以立刻终止。
2024-03-08 14:28:15
1824
1
原创 将pyinstaller打包为exe文件
(1)如果是Python依赖包,在Python的依赖包目录下,找到speechbrain包,复制到pyinstaller打包后的于exe文件同级的。(2)推荐,使用.spec文件打包,在文件中的”hiddenimports“参数中追加依赖包,我的文件如下;(1)在使用命令打包的时候,使用–hidden-import参数,追加依赖包;使用命令第一次打包后,会自动生成该文件,第一次以后可以进行修改后打包。注意pyinstaller的版本,不同的版本打包后的目录不一样。(2)使用.spec文件打包。
2024-03-05 10:21:23
352
原创 LDA(Latent Dirichlet Allocation,隐含狄利克雷分布)模型简单使用
机器学习高级算法中LDA算法有线性判别分析(Linear Discriminant Analysis,LDA)和隐含狄利克雷分布(Latent Dirichlet Allocation,LDA)模型两个。本文介绍的是隐含狄利克雷分布模型,此模型主要用于文本主题分类。本文使用sklearn中的LatentDirichletAllocation实现主题分类。
2024-03-03 21:19:39
469
原创 SentenceTransformer简单使用
SentenceTransformer主要用于对句子、文本和图像进行嵌入。可用于文本和图像的相似度对比查找等。
2024-03-03 21:10:54
1207
原创 使用pyannote-audio实现声纹分割聚类
pyannote.audio是用Python编写的用于声纹分割聚类的开源工具包。在PyTorch机器学习基础上,不仅可以借助性能优越的预训练模型和管道实现声纹分割聚类,还可以进一步微调模型。
2024-02-28 20:29:24
3379
5
原创 使用openai-whisper实现语音转文字
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。在官网上选择windows版本在GitHub上可以选择最新版本,选择;如果python程序出现“FileNotFoundError: [WinError 2] 系统找不到指定的文件。”错误时,可能是ffmpeg版本的问题。将解压到D盘,名字修改为ffmpeg, 将目录添加到环境变量中。,出现下面的信息表示安装成功。
2024-02-19 17:56:14
3425
原创 Flask和Vue框架实现WebSocket消息通信
主要的安装包 Flask、Flask-SocketIO,注意Python版本要求3.6+更新基础环境我的“requirements.txt”的包安装命令。
2023-12-10 15:33:24
2506
原创 Flask使用线程异步执行耗时任务
在开发Flask应用中一定会遇到执行耗时任务,但是Flask是轻量级的同步框架,即在单个请求时服务会阻被塞,直到任务完成(注意:当前请求被阻塞不会影响到其他请求)。解决异步问题有两种思路,一种是借助外部工具实现异步,例如:消息队列(RabbitMQ)、 异步任务队列(Celery+Redis);另一种借助Python中的进程、线程或协程解决异步。我的是小项目选择因此选择了第二种方法。经过测试,我在Flask中使用协程(gevent)会被阻塞;
2023-12-02 19:20:10
1856
原创 使用ResponseEntity实现文件下载
ResponseEntity的泛型可以设置自定义返回值,也可以使用自带的返回值。使用ResponseEntity实现对jar内部和外部的数据文件实现下载。
2023-09-21 18:45:00
567
原创 python中MongoEngine简单使用
MongoEngine是一个处理MongoDB的对象文档映射器。pymongo是非面向对象的方式操作数据。MongoEngine开发文档python安装mongoengine。
2023-06-19 19:00:00
327
原创 使用Apache ShardingSphere简答实现水平分表
Apache ShardingSphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。官方网站。
2023-06-18 08:39:46
320
原创 Flask中使用Flask-WTF验证JSON对象参数
Flask-WTF是对WTForms库的扩展,默认只对”form“标签下的表单进行验证。针对当前前后端分离的项目中,json传输参数需要进行二次封装才能使用。
2023-06-04 23:05:02
911
原创 安装ClickHouse集群
ClickHouse是由俄罗斯搜索引擎Yandex开源的列式数据库管理系统,定位是分析性数据库。它适合聚合计算,写入速度非常快,不支持事务,不存在隔离级别,不支持高并发。此外,建议1000条以上批量的写入,不建议单条记录修改和删除。ClickHouse稳定版下载地址CentOS7软件版本。
2023-05-14 15:43:44
714
1
原创 使用OAuth2实现单点登录
要想自己定制,需要把OAuth2协议和SSO思想策略弄通才行。我使用OAuth2的密码模式实现了简单的SSO,我使用oauthserver作为授权服务器,使用oauthresource作为客户端。可以根据情况使用@EnableOAuth2Sso注解使用授权码模式(更安全)登录。oauthserver上实现继承了AuthorizationServerConfigurerAdapter和WebSecurityConfigurerAdapter的类;
2023-04-02 20:03:33
1769
原创 Go语言的并发
并发(Concurrency):把多个任务在不同的时间点分配给处理器处理,在同一时间点,任务并不会同时运行。并行(Parallelism):把每一个任务分配给每一个处理器独立处理,在同一时间点,任务一定是同时运行。
2023-03-17 20:23:20
690
原创 Go语言的面向对象
Go语言没有类,结构体提供了绑定数据和方法的行为,可借助结构体解决面向对象的多态的问题。个人理解,函数是具有独立功能的代码块,方法是对象行为的代码块,方法的本质是函数。在Go语言中两者最明显的区别是方法有接受者,函数无接收者。Go语言接口是一组方法签名。空接口是指没有定义任何方法的接口,任何类型的数据都可以实现空接口,且它的内部实现了保存对象的类型和指针,因此它能够灵活保存抽象数据。Go语言中空接口很常用。
2023-03-16 14:00:14
480
原创 安装NocoDB
NocoDB是Airtable的开源替代品,将 MySQL、PostgreSQL、SQL Server、SQLite 或 MariaDB 转换为智能电子表格。👉 特色功能是协同编辑电子表格。
2023-03-07 12:06:49
2146
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人