查看原文
其他

识别手稿准确率95%的人工智能:Transkribus与人文研究的前景

科学史图书馆 科学史图书馆 2022-07-15

Transkribus ([https://readcoop.eu/transkribus/]) 是一个利用人工智能识别手稿的软件,同时又不仅是一个软件,更是一个集扫描、教学、科普、众包协作等功能为一体的文献处理平台,正在开发越来越多的功能。现在的Transkribus总共有30,000+注册用户,其中有几千人是规律地使用Transkribus进行日常工作的。可以想见,Transkribus的模式在未来会大大改变人文学科的研究和训练重心,乃至学界的种族、阶级、性别构成:人文研究,特别是手稿和档案的研究,不再是学者在象牙塔里皓首穷经才能推进一点点的东西,而是任何人都可以参与、贡献的知识生产过程。

很多时候,人文学科(尤其是档案手稿研究)的象牙塔之所以显得高不可攀,是因为它包含了大量作为门槛的重复学习过程,每一个个体学者要花上数年时间才能熟练掌握上一代、上上一代个体学者同样掌握的基本技能,还要学习前人连年层累的二手文献,经历了这个内卷化过程才得以取得谈论事物的资格;同时也包含了大量的重复劳动过程,前一个进档案馆查档的人转写录入一遍,后一个查这份档的人还要自己转写录入一遍,对个人专业技能和鉴别力的追求反而造成了劳动的浪费。而Transkribus的核心,也就是强大的人工智能手稿识别模型,就可以在这个知识生产过程中把大量的重复交给机器完成。它可以让公众参与到人文研究中,让研究机构以更低的成本公开资源,也帮助学者发挥更多潜力,让基本技能可以在实践中提升而非成为门槛。我个人关心这个项目,也是因为希望把科学史图书馆做成一个在文献领域去内卷化的开放平台。

当然,这并不意味着从此看不懂手稿也可以做学术,对公众的门槛降低不等同于对专业学者的要求降低,更可能是升高。人工智能让任何人都能以媲美专家的水平识读手稿,但也意味着学者光看懂机器能看懂的东西还不够。以往学者可能将大量精力花费在内卷化训练过程里,而在个人的研究项目中随便从海量新材料里转写出一篇手稿概括一下内容就能发paper;但是二十年后就不行了,当技能和材料不再被独占,“贵族学科”周围不再有高墙,只有更深入、更具原创性的研究会得到重视。“专家没有灵魂,纵欲者没有心肝,这个废物幻想着它自己已达到了前所未有的文明程度”——而人工智能的出现将要求专家必须有灵魂 ,不然人文学者将与机器无异。

初次接触这个软件是在学校的Digital Humanities中心上了两节课,回去自己查阅了一些资料,深感这个项目的重要性。希望通过Transkribus,我们能看到人文科学一个开放性的前景,在我们的研究、训练中重新评估一些传统方法的地位。未来,学者的精力分配、研究侧重、训练方式,乃至学术界的种族、阶级、性别构成,都有可能在技术的大规模应用下被颠覆。

目录

•从软件到生态:Transkribus项目的现状与前景

    •手机扫描 DocScan    •学习网站 Transkribus LEARN    •众包协作 Transkribus Library     •阅读福柯的机器 The Foucault Reading Cards (FFL) project

•Transkribus的使用方法

•How to Guides下载链接•Transkribus用户交流群

•如何识别手写体:近十多年来的数字人文小史

•图书馆相关馆藏

从软件到生态:Transkribus项目的现状与前景

Transkribus始于一个2013年在University of Innsbruck开始的项目,原名叫tranScriptorium, 目的一个是综合各种现有的HTR (Handwritten Text Recognition) 技术,提供更经济、更准确的转写,二是做一个能允许许多volunteer一起协作,在机器的帮助下转写大量档案文本的桌面客户端。

2016年,Transkribus被整合进了欧盟资助的READ (Recognition and Enrichment of Archival Documents) 项目。从他们公布的项目图示中,我们可以看到Transkribus已经不仅是一个软件了,而是一整个知识生产的系统,从个体学者、公众到机构,它的目标是让与手稿相关的知识生产形成一个开放协作的 生态 。

对于手里有手稿要转写的个体学者,Transkribus开发了手机扫描app DocScan,扫描的手稿直接上传到Transkribus以备进一步工作。配合这个app的还有一个帐篷——用来扫描的小帐篷,反正就是帐篷里面提供LED光源和无阴影环境,手机放在顶上自动扫描,解放双手用来扶书和翻页。作为一个把CamScanner用到极致的人(以后有空写一篇手机扫描的手腕技巧),我觉得这种€239的帐篷对我来说可能就是趴桌上睡觉用的。

Transkribus的大量手稿资源也让他们得以开发一个在互动中练习手稿识读的网站 Transkribus LEARN ,还有一系列开放给公众,鼓励公众合作参与转写的平台。下图就是Transkribus LEARN (https://transkribus.eu/r/learn/), 进去以后可以选择语言、年代进行识读,需要注册一个账号。界面如下图,可以看到就像游戏一样,还有排行榜。

同时Transkribus还支持众包研究。在 [http://transkribus.eu/read/library/] 的页面,用户可以看到所有其他学者公开的项目,不管你是学者还是业余爱好者,注册一个账号就可以参加,然后在自己的Transkribus客户端访问这些学者上传的手稿,帮助训练人工智能转写或者校对。下图是我点进去参与的一个叫Transcribe Bentham的项目,他们是Transkribus长期的合作方之一,在训练人工智能识读英国哲学家 Jeremy Bentham (1748-1832) 的档案,协作者可以在自己的客户端转写帮他们提供用来训练的数据。他们在网站[https://blogs.ucl.ac.uk/transcribe-bentham/]上还会实时更新转写进度。


现在已经有不少档案馆、图书馆采用Transkribus建立人工智能识别模型,转写了大量档案,有的还正在建立索引和手稿关键词检索平台。下面介绍一个比较好玩的:用Transkribus转写福柯的读书卡片。项目的网页是 [https://ffl.hypotheses.org/],他们从2013年起就在电子化法国国家图书馆(BnF)保存的福柯读书卡片,同时也和Transkribus合作制作这些卡片的转写电子版。这个项目也是更大的福柯手稿、个人藏书电子化项目La Bibliothèque Foucaldienne([http://lbf-ehess.ens-lyon.fr/pages/index.html])的一部分。

现在一部分的电子版网上已经可以看到([http://eman-archives.org/Foucault-fiches]),不过转写还没有放上去。网上可以找到全部卡片的PDF目录(http://eman-archives.org/foucault-fiches/files/theme\_uploads/Foucault-fiches-de-lecture\_inventaire\_chemises.pdf)。

下面几个图是Ffl项目2018年在Transkribus使用者的一个会议上做的报告。可以看到,解读福柯的手稿非常有难度,各种各样的缩写、错别字、修改等等,即使对于福柯专家也非易事。但是训练后人工智能模型达到了92%的识别准确率,而且支持在Transkribus软件上模糊搜索。这只是600份手稿,更多的手稿还在转写、训练和电子化的过程中。Ffl将来还计划把一万多张读书卡片索引和模糊搜索的功能搬到网页上。

使用Transkribus进行转写的项目很多都在进行中,软件也在不断改善,未来几年可能就会迎来大量转写的手稿资料一起上线公开,这是很值得期待的。

Transkribus的使用方法

下面讲一下使用方法。划重点:使用Transkribus的终极目的是什么?是 训练一个模型 (train a model) 帮你识别日后的所有此类手稿。Transkribus在官网上有一系列的How to Guides([https://transkribus.eu/wiki/index.php/How\_to\_Guides]),也有YouTube视频,入门可以先从 How to use Transkribus - in 10 steps (or less) 这篇开始,后面每一个步骤还有更详细的guides。我这里打包了所有的How to Guides PDF文件,支持在线阅读,也可以直接下载分享里的压缩包。

OneDrive链接:[https://1drv.ms/u/s!AlQub11quY6jhZYNu4rPRjwZEoGqWA?e=nEhsSN]

坚果云链接:[https://www.jianguoyun.com/p/DZCVCBAQh7vsBxjF37UD]

1.下载与登录 到transkribus.eu或者readcoop.eu/transkribus下载软件,下载之前需要注册账号。如果没有Java还需要装个最新的Java 8,因为Transkribus是用Java运行的。链接[https://java.com/en/download/faq/java\_win64bit.xml]

下载之后在左上角登录。登录后会看到一个以自己邮箱命名的collection,里面可能还有一些系统送你玩的示例文件。Collection就是你自己的转写项目的单位,你想转写一个人的,或者一个世纪的手稿,就新建一个collection。

2.上传手稿

选定一个collection之后就可以往里面上传手稿。如图,上传的按钮是最顶上左上角这个向左的箭头。或者点击server-document-import document to server这里,出来的界面是一样的。

上传的界面是这样。我们一般用两种传法:一是上传单张图片,注意这里传图片是以 文件夹 为单位的,需要提前把所有单张的图片放到一个文件夹里然后选择上传。二是上传PDF让它从里面提取图片。

一般上传好了的时候会提示你刷新一下,点击小茶杯图标Jobs也可以查看上传的进度。上传的文件会显示在这里。如图,我是从红蓝版本的瓦尔堡全集Tagebuch der KBW一卷中提取了一些瓦尔堡的手稿图片上传。双击Title就可以加载文件,翻页按钮是上面的页码和小箭头。

在Overview这一栏里可以看到上传这个文件的所有页面。页面还会为你标明状态:红色是New,黄色In Progress是切分好了还没开始转写,绿色是已经开始转写,等你做完了还可以在上方标为Done。如果要删除、移动、增加页面,就点左边图片栏上方的Show Document Manager进行修改。

3.切分文字区域 (segment)

机器读取手稿是以行为单位的,这就需要我们先把手稿切成一个一个的词或者行,总之光标得顺利移过一行才能读取相邻书写元素之间的关系。这里面的原理我们在数字人文史部分会讲。这个功能就是Tools里面的Layout Analysis,可以自动完成,选择当前页或所有页点击Run就可以。

我上传了一个Leonhard Thurneysser (1531-1596)的手稿,Layout Analysis之后是这样。可以看到一个个紫色的区域就是识别出来的一行 (line),仔细看能看到每一行有一根深色底线 (baseline),都对应在图片下面转写区域的每一行里,每行有一个编码。

机器识别文字区域可能有错,所以一般都需要一个手动修改切分结果的过程。手动切分的选项在左边的竖列里。如图,TR按钮 是Transcribe,功能就是画绿框,框出有手稿文字的区域。这个区域可以理解为“栏”,一页手稿可能有n栏,上图中每行的号码1-1,1-2就代表这是第一栏中的第一行、第二行。机器识别好的文字也有这个绿框,如下图,可以拖动调整大小,把没框进的文字框进去。需要删除点backspace键即可。

把框内的内容划分出行,需要我们点BL按钮,也就是Baseline,它的功能是手动画出一条一条的底线,一条底线是一行,AI会按照这个单位读取连笔、词组等等连续的书写单位。在你需要标为一行的文字下面拖动划线即可。如果需要放大文件,可以用顶上一排的小放大镜以及绿色箭头的Fit to page, Fit to width选项,如下图。删除底线也是按backspace键,如下图中95这个印刷页码被机器标为一行,但实际上是应该删除的,因为会影响对手写体的学习。

当所有要识别的手写区域下面都有了底线,就可以开始转写了。

4.转写

Transkribus上面有很多数字人文学者用大量数据训练出的公开模型 (public models),这些模型我们都可以用。点击Tools-Text Recognition-Models就可以浏览全部的公开HTR模型。如图,可以看到这个19世纪的德语Kurrent模型用了3037966词,518504行的数据训练,description里还提到主要是瑞士的文件。使用训练文档时的CER在5.45%,检验时的CER在7.24%,也就是92-95%左右的正确率。下面的学习曲线就是CER随训练时间变化的曲线。

识别时,在Text Recognition下面点击Run,系统会弹出对话框让你选页数、选模型。注意除了HTR模型外还有 语言模型 (language models) 可以选,说白了就是词库,你可以选择光学识别的结果和哪个词典比对。如果你训练了模型,就可以选择使用你训练的模型中提取的词库,这样准确率是最高的。

下面这个是Leonhard Thurneysser (1531-1596)的一本书,字体是Fraktur,我就选择了18世纪维也纳的Fraktur模型和Germanisches Nationalmuseum的词库。可以看到这个Fraktur模型的准确率实在非常高,在99%以上。

下面就是Thurneysser的书其中一页的识别结果。可以看到准确率的确非常高,图里面的部分基本就错了几个字母,外加那个大E被认成Sie了,其余都正确。

试过了印刷体再来试一下Thurneysser的手稿。选用16-18世纪的Kurrent模型和GNM词典,可以看到准确率也非常高,错了一些字母例如Parben应为Farben。Fraktur和字体整齐的Kurrent不难读,但是却难以用一般OCR工具做成可检索的文档,Transkribus就解决了这个问题。识别好的文档可以在Transkribus里面全文搜索(支持模糊搜索,这样识别出了一点错的东西也可以搜到),也可以将识别好的文档导出再用Foxtrot Pro索引,这就大大提升了数据库的全面程度。

有没有准确率不高的时候?也有。下面是之前识别的瓦尔堡手稿,我在下面放了全集里转写好的文字对比,可以看到准确率就没那么高了,Astrologie直接认成了fördern,这也很正常:模型是19世纪瑞士的,而瓦尔堡这些手稿的时间在1926-1929年,更别提瓦尔堡书写的不规则程度估计是全德国罕见的(至少他的通信圈子里我没见过字比他更乱的)。90-95%的准确率是你这个特定模型对于用于训练的特定种类手稿而言的,所以不能每次都期待太高,需要看着公开模型的description想一想它的适用范围。至于瓦尔堡,如果我们想要一个识别瓦尔堡准确率95%的模型,就必须用瓦尔堡自己的手稿训练一个。

转写好的文件还可以导出,最顶上的绿箭头小文件夹向左的是导入,旁边向右的就是导出。如下图,导出有各种选项,我这里选择的是word文档,导出好会通过邮件发给你一个链接。

5.训练模型 (train a model)

当你已经积累了一定量转写好的手稿,就到了最关键的一步: 训练人工智能 。注意:新注册的用户是没有train models的权限的,权限需要你向 email@transkribus.eu 发个简单邮件申请一下。我大概两三天就收到了回复,已经给我开通了权限。

官方说明里说需要至少5,000词(25页)转写好的印刷文档或15,000词(75页)转写好的手稿才能训练模型。我还没有这么多,不过上课的时候看了老师训练模型的过程,所以先用How to Guide里的图介绍一下。如图,有了训练权限后,点击Tools-Train,在弹出对话框里填上模型的名称、描述和语言。

下半部分是你自己的所有文件,需要从这里面打开,选择一些图片作为training set,另一些作为test set,就是训练好模型测试用的文档。同时Transkribus还支持导入已转写好的文件,比如上面提到的瓦尔堡全集里转写好的手稿训练模型,需要把文字编辑一下变成特定的txt格式,详见Guides。

训练模型需要的时间很长,当时老师演示时是前一天晚上给服务器提交任务,一夜的时间训练好。训练好之后,点击上面我们看public models的地方Tools-Text Recognition-Models,选择只查看In Collection的模型,就能看到你训练的模型,还有它的学习曲线。

训练好了还可以选择把自己的model变成public model给所有人使用,具体参见Guides的内容。训练模型也是一项学术成果,因为你提供了可以给更多人使用的工具和数据,这是可以放进grant proposal里的。

正如前面所说,Transkribus是一个非常适合协作的软件。多人合作一起录入一份档案,训练出个人工智能帮忙,是让费时费力的转写过程变得高效的最好方式。我建了一个Transkribus用户交流群,方便大家分享使用体验、互相答疑,更可以找到研究类似手稿的人一起协作训练模型(比如我就比较想有人一起训练个AI瓦尔堡)。也可以在公众号后台回复Transkribus加入。

如何识别手写体:近十多年来的数字人文小史

最后我想把目光从Transkribus软件本身拉到它的数字人文史,来理解作为技术物的HTR自身的逻辑。作时去IEEE上循着庞大的引用网络看了一圈的论文,机器学习里面的math我还懂,但是作为技术的使用者也作为科技史学者,我们还是要承认技术本身是重要的,我们不能脱离具体的实践技术谈论方法这一部分写作的过程中郭神为我提了很多建议,彬旭还主笔了其中两段,在此真心表示感谢。

识别手写体是近十多年间随着图书馆、档案馆、博物馆以及各种人文领域的需求增长发展起来的研究领域。一般我们比较熟悉的技术是OCR (Optical Character Recognition),它在印刷品识别中用得比较多。OCR是一个历史很长的技术,可以参见下面Anders Brun的ppt, 简单来说它的原理就是识别字母,再利用词库或者不同字母组词出现的概率等调整结果。以OCR为基础的数字人文工具很多,比如Tesseract([https://tesseract-ocr.github.io/])和OCRopus([https://github.com/ocropus])。不过识别早期现代的印刷本时OCR就不理想,CER (Character Error Rate, 或用Word Error Rate WER) 基本都超过20% (数据引自Milioni 2020), 手抄本就更不用说了。人们一直在探索如何识别字体更复杂的早期文本。

这中间有一个鸡生蛋,蛋生鸡的问题:OCR的原理是识别字再拼成词,但是手稿中的字母必须和词连起来看才能识别,如下图,这就成了一个悖论,又叫Sayre’s paradox,可参见图书馆里的文章Sayre (1973)。以对于手稿识别以及一些字体比较奇怪的早期印刷本,比如前面看到的Fraktur字体,单纯的字母识别是不够的,必须要有方法处理连续的书写信息。

不少学者针对这个问题提出了他们的解决方案。其中一个就是 word spotting (Rath and Manmatha 2007),和我们熟知的OCR不同,后者是以字母为单位识别的,而前者以词为单位,它的基本原理是把手稿中词的图像切出来 (segmantation) 做一个词库。同时也有一些学者 (Adamek et al. 2007) 思路不一样,用词的轮廓线而不是词的图像作为单位识别。总之是要把手稿中的书写元素关联起来看待。

在这种以连续书写单位为核心的识别方式里,机器学习 是一个不可缺少的要素。相比于千篇一律的激光排印印刷体,手稿的字体是有很大个体差异的:同一个曲线在这个手稿里可能是字母n,在那个手稿里可能是ü上面的两个点连起来,所以每个手稿都需要用其自身的书写规律来识别,这里就要用到机器学习。如果说以往一般的光学文字识别就是对一个新的文件扫描、切分 (segmentation),然后对照着看哪一块长得像哪个字母,现在的文字识别则有一个提前学习的过程:先把一大份手稿取出一部分,将它的图像和识别好的文字结果喂给人工智能,让它去提取大量的数据,统计出各种概率,然后将这些概率代入一定的模型中,去预测另外一部分手稿识别的结果。这样一来,特定的一种手稿就有一个特定的模型来预测,这个学习已经识别好的手稿的过程就是训练模型 (train a model) 的过程。

隐马尔可夫模型 (Hidden Markov Models, HMM) 就是这个过程中最核心的模型之一。它在1999年就被用于英语和阿拉伯语的识别,当时据说达到了1.1%的CER,也就是98%以上的正确率 (Bazzi et al. 1999),不过这在当时并不是那么好复制的成功。翻看2010年左右的论文,很多项目报告的正确率在90%左右,这个算是今天Transkribus能达到的基础水平。现在我们打开Transkribus训练一个模型,官方给出的准确率在90-95%,很多情况下还能高出95%,就像我们上面看到的那样。这次上课时老师演示的一个20世纪的法文手稿,模型训练后识别出来几乎是全对的。

简单来说,隐马尔可夫模型就是一个给你一些可观察的状态y,求隐藏状态x的方程。特点在于它的模型推断每一个y时会考虑到x和x旁边临近的值x1的关系。所以如果手稿中读到一个笔迹#%@#¥#¥(可观察的y),长得既像eat apple又像end amber(要求的x),它计算结果的时候既会考虑到这篇手稿中eat和apple相邻的概率、eat和amber相邻的概率等四个概率,也会考虑到这篇手稿中%识别为t或d的概率,连笔的#¥识别为ap或am的概率等等,然后计算出一个概率上可能性最大的结果。所以这个模型就解决了前面所说处理连续书写信息的Sayre’s paradox,它非常适合预测和邻近要素一起变化的东西,在语音识别领域的应用就很广泛,因为人类说话前面的音节是会影响后面的音节的。

如下图,他们训练模型时,将每一行的图像用一个光标从左往右滑过去识别,读取出一系列可观察的状态y:光标区域黑色像素的比例、最高点和最低点的间距、黑白像素的转换等等,然后预测x是什么字母。这就是标志Transkribus的HTR技术 (Handwritten Text Recognition) 的基本原理之一,现在我们用到的HTR基本都是对隐马尔可夫模型的改进和综合应用。

下图来自于前面提到的Transcribe Bentham项目,他们论文中有一张图解释HTR的原理。我们可以看到它做的事情首先是feature extraction,以不同的方式提取出这一行字的光学要素。提取出要素之后,它在使用隐马尔可夫模型预测字符的同时,还和词库(保证识别出来的是存在的词汇)进行比对,并且使用n元语言模型 (N-gram Language Model) 同时计算概率。N-gram即去统计语言或者文本库中连续的N个符号(字母, 词)组成的序列的联合分布, 然后根据上下文已知的符号(比如一个字母前N-1个字母与后N-1个字母), 来推理这个符号最有可能是什么。比如英语法语中q后面几乎总是跟着u, 那么在N-gram model里看到q就可以确定地猜出下一个字母是u。同样的逻辑也可以应用在词组成句子上。

现在Transkribus也在使用 神经网络 (Neural Networks, NN) 建立HTR模型,这是一个更强的升级版,在2009年以后越来越多地应用在了HTR中 (Fischer et al. 2009) ,准确率有时比仅使用隐马尔可夫模型略高一点。神经网络是一种模拟大脑进行计算推理的模型, 他可以根据一些输入与输出样本去学习两者之间的映射关系(Mapping). 在我们的情形中便是让他去学习从手稿上下文出识别的字符(Context), 和当前字符图片, 到字符的映射. 一定结构的神经网络被证明可以近似任意的映射, 因而只要给出足够的数据(转写好的手稿和图片)让网络去学习, 网络就可以不断改进其内部连接方式, 去改进从图片和上下文猜字符的能力. 当训练完成后, 网络再遇到相似的上下文以及相似的图片, 他就能"猜" 或者推理(Inference)出对应的文字. 而即使没有遇到过完全相同的字符图像, 神经网络许多时候也可以根据之前学习的经验 举一反三, 猜出新的字符, 即所谓泛化(Generalization). 由于计算资源以及数据集的丰富, 神经网络近年来被用在各种机器学习场合中, 去学习不同数据之间复杂的映射。而现在我们在Transkribus里自己训练的模型也是一个一个的神经网络。

以下是一些我学习这些知识时读过的文献,顺便给图书馆建了第四层 4 Histories of Technics,目前内容还只有这些。进入图书馆 www.zotero.org/groups/2489429/ 都可以找到下载链接,有些Wordpress博文我把全文贴在了note里面。通过这些项目报告、论文,可以更进一步了解Transkribus的种种技术操作。

馆藏位置

总之,HTR技术和Transkribus软件都是正在发展中的新东西,不完善的地方还可以再改,未来的可能性还很大。想开始探索Transkribus还是趁早,没准以后就要收费了。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存