左手 Serverless,右手 AI,7 年躬身的古籍修复之路
作者:宋杰
“AI 可以把我们思维体系当中,过度专业化、过度细分的这些所谓的知识都替代掉,让我们集中精力去体验自己的生命。我挺幸运的,代码能够有 AI 辅助,也能够有 Serverless 解决我的运营成本问题。Serverless 它是一个 Game Changer,就是彻底改变云计算模式的创新。 ”
我叫宋杰,是一个上海人。从初级的程序员一直到做企业的架构工作,现在是在利用 IT 技术做古籍方面的开发与利用。
数字化对古籍有一个非常大的好处在于它的修复是异常高效的,传统的古籍修复对人才的要求门槛是很高的,但数字化就创造了另外一种可能。首先,修改相对简单,另外,它还可以做版本跟踪。 即便我这一次修复不成功,后面的人可以根据原始图片再次修改,让古籍资源能够充分地活化起来。
机缘巧合下,我承担了这个任务。
印藏项目源于香港的一位私人收藏者,他收藏了历朝历代的印谱后把这些印谱的数字化版本,无偿的捐献给了复旦大学图书馆。

我第一次尝试着以 IIIF 对印藏项目进行大规模的呈现。在互联网这样可能产生极高流量波峰波谷的环境下,到底怎么去设计它的架构,才能既满足业务的需要,又比较经济呢?
阿里云提供的 Serverless 技术尤其是函数计算产品,对于整个项目帮助极大,它性价比相当的高,根据经验估算来说,每次收费基本上是等于单机开发的 10%。
其实像复旦大学印谱文献虚拟图书馆这样的网站,它的原始图像就有 3TB,近 50 万张图片,包括现在已经用 AI 识别的图片,整个运营费用一年下来也就几千元,而传统的方式一个月的话就要花费 2000 元左右。

原来大家做网站开发,第一考虑是要用什么 web 服务器,后端用什么数据库。但 Serverless 出现之后,已经把底层的这些操作系统、应用软件、容器编排全部抽象掉了。
对大多数程序员来说,需要解决的是领域问题。不用去关心下面的运维问题,只需要把精力投入在怎么解决业务问题上去。
在计算方面,Serverless 也彻底帮助我们做到了计算和存储分离,算力的估算方式就发生了变化。在 Serverless 的环境当中,我们只需要指定它的内存大小、运行时间,给到这两个参数就可以把算力定下来了。而且你能支配的总容量其实是没有上限的,让程序员能彻底集中精力做应用的事。

我现在做的项目,叫易图 IIIF 文化遗产图像解决方案,它是一个平台,可以说是对印藏项目的一般化。对于一些中小型的机构,甚至是个人收藏爱好者,他只要在网页上进行上传,就能够出现一个跟印藏一样的网站,这是我个人的创业项目。
“我的左手是 Serverless,右手是 AI”。 强人工智能是一定高度依赖于文化的,在某一个文化领域当中产生出符合文化与价值观、审美倾向,包括对世界的基本认知的一个智能的大模型。
要知道模型都挺大的,至少不能让我等 1 分钟才看到推理结果。阿里云通过函数计算来做 GPU 应用,并自研一套镜像快速部署方案,我的感受是体验非常流畅。同时整个过程是按需计费的,这对所有开发 AI 应用程序的程序员来说是一个福音,彻底让程序员能够集中精力做应用的事情。
我们迎来了开发者最好的时代。
古籍识别体验场景全新上线
中华古籍浩如烟海,对珍贵古籍进行保护、修复和活用,关乎中华文脉的延续和传承。随着数字技术不断成熟,古籍正走出“深闺高阁”,资源会得到更有效利用。轻点鼠标、一键部署,儒家经典《论语》可逐页在线阅览,古籍还能实现繁体字和简体字转换等功能,让读者能查询、会阅读。
为了让更多人了解古籍修复,宋杰与阿里云函数计算团队合作,通过函数计算一键搭建古籍识别平台,排版形式既符合现代人的阅读习惯,又还原了古籍纸张的阅读美感。欢迎大家参与到古籍修复的活动中,让古籍更好地走进千家万户。

点击下方链接,参与古籍修复,用数字技术助力古籍活化。
https://developer.aliyun.com/topic/fcrepair
相关文章:
左手 Serverless,右手 AI,7 年躬身的古籍修复之路
作者:宋杰 “AI 可以把我们思维体系当中,过度专业化、过度细分的这些所谓的知识都替代掉,让我们集中精力去体验自己的生命。我挺幸运的,代码能够有 AI 辅助,也能够有 Serverless 解决我的运营成本问题。Serverless 它…...
计算mask的体素数量
import numpy as np import nibabel as nib # 用于处理神经影像数据的库 # 从文件中加载mask图像 mask_image nib.load(rE:\mask.nii.gz) # 获取图像数据 mask_data mask_image.get_fdata() # 计算非零像素的数量,即白质骨架的体素总数 voxel_count np.count_no…...
VR全景营销颠覆传统营销,让消费者身临其境
随着VR的普及,各种VR产品、功能开始层出不穷,并且在多个领域都有落地应用,例如文旅、景区、酒店、餐饮、工厂、地产、汽车等,在这个“内容为王”的时代,VR全景展示也是一种新的内容表达方式。 VR全景营销让消费者沉浸式…...
FreeRTOS学习笔记——四、任务的定义与任务切换的实现
FreeRTOS学习笔记——四、任务的定义与任务切换的实现 0 前言1 什么是任务2 创建任务2.1 定义任务栈2.2 定义任务函数2.3 定义任务控制块2.4 实现任务创建函数2.4.1 任务创建函数 —— xTaskCreateStatic()函数2.4.2 创建新任务——prvInitialiseNewTask()函数2.4.3 初始化任务…...
js 之让人迷惑的闭包 03
文章目录 一、闭包是什么? 🤦♂️二、闭包 😎三、使用场景 😁四、使用场景(2) 😁五、闭包的原理六、思考总结一、 更深层次了解闭包,分析以下代码执行过程二、闭包三、闭包定义四、…...
10月10日上课内容 Docker--harbor私有仓库部署与管理
Docker--harbor私有仓库部署与管理 ------------------ 1、搭建本地私有仓库 ------------------------------ #首先下载 registry 镜像 docker pull registry #在 daemon.json 文件中添加私有镜像仓库地址 vim /etc/docker/daemon.json { "insecure-registries"…...
Java 序列化和反序列化为什么要实现 Serializable 接口
第一、序列化和反序列化 序列化:把对象转换为字节序列的过程称为对象的序列化. 反序列化:把字节序列恢复为对象的过程称为对象的反序列化. 第二、什么时候需要用序列化和反序列化呢? 当我们只在本地JVM里运行下Java实例, 这个时候是不需要什么序列化和…...
vite+vue3+ts中使用require.context | 报错require is not defined | 获取文件夹中的文件名
vitevue3ts中使用require.context|报错require is not defined|获取文件夹中的文件名 目录 vitevue3ts中使用require.context|报错require is not defined|获取文件夹中的文件名一、问题背景二、报错原因三、解决方法 一、问题背景 如题在vitevue3ts中使用required.context时报…...
C#(Csharp)我的基础教程(四)(我的菜鸟教程笔记)-Windows项目结构分析、UI设计和综合事件应用的探究与学习
目录 windows项目是我们.NET学习一开始必备的内容。 1、窗体类(主代码文件窗体设计器后台代码文件) 主窗体对象的创建:在Program类里面: Application.Run(new FrmMain());这句代码就决定了,当前窗体是项目的主窗体。…...
Flink: Only supported for operators
Exception in thread "main" java.lang.UnsupportedOperationException: Only supported for operators.at org.apache.flink.streaming.api.scala.DataStream.name(...
NSIDC定义的海冰相关概念
文章目录 相关概念Matlab绘图结果展示 相关概念 NSIDC 表示 “National Snow and Ice Data Center”,即美国国家雪和冰数据中心。NSIDC 是一个位于美国科罗拉多大学波尔得分校的研究中心,致力于收集、管理和分发全球雪和冰的科学数据。 Matlab绘图 cl…...
【码银送书第八期】《Python数据挖掘:入门进阶与实用案例分析》
摘要:本案例将主要结合自动售货机的实际情况,对销售的历史数据进行处理,利用pyecharts库、Matplotlib库进行可视化分析,并对未来4周商品的销售额进行预测,从而为企业制定相应的自动售货机市场需求分析及销售建议提供参…...
微信小程序底部tabBar不显示图标
现场还原 在设置微信小程序底部tabBar导航图标时,无论如何操作均无法显示在界面上 解决思路 问题1 图标类型 一开始以为不支持png类型,但查看官方API仅提示ICON尺寸大小 打开其他项目可以正常展示,排除图标类型问题 iconPath string 否 …...
PostgreSQL基操之角色、表空间、数据库与表
PostgreSQL基操之角色、表空间、数据库与表 角色创建与管理表空间创建与管理数据库创建与管理表创建与管理 角色创建与管理 PostgreSQL数据库里没有User的概念,只有Role的概念。有的Role可以用于登录数据库,这些Role与其他数据库中的用户等价。 --创建…...
【算法|滑动窗口No.1】leetcode209. 长度最小的子数组
个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…...
11_博客管理系统_实现过程
项目初始化 创建项目文件夹进入文件夹,执行 npm init -y 命令安装 express 和 mongoose,npm install express mongoose创建项目入口文件,app.js 或 index.js在 app.js 中进行项目搭建配置网站的路由配置网站静态资源目录 配置静态页面 配置…...
安防视频监控平台EasyCVR集成到ios系统不能播放是什么原因?如何解决?
视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多路视频流&#…...
hutool实现文件上传与下载
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency> 文件上传需要创建一个表 Autowiredprivate SysFileInfoMapper sysFileInfoMapper;Value("${ty.…...
vue3学习源码笔记(小白入门系列)------provide和 inject 跨层级数据传递原理
目录 前言provideinject 总结 前言 需要从父组件向子组件传递数据时,会使用 props。对于层级不深的父子组件可以通过 props 透传数据,但是当父子层级过深时,数据透传将会变得非常麻烦和难以维护。 而依赖注入则是为了解决 prop 逐级透传 的问…...
【Python深度学习】目标检测和语义分割的区别
在计算机视觉领域,语义分割和目标检测是两个关键的任务,它们都是对图像和视频进行分析,但它们之间存在着明显的区别。本文将通过图像示例,详细阐述语义分割和目标检测之间的差异。 一、基本概念 1.1 语义分割(Semantic…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
