《汉语大词典》注音校对

坛友所发之所谓《汉语大词典》光盘2版,来路古怪,让人惊喜不断。虽则问题也有,但除注音外几乎可以忽略,或随见随改即可。而对于注音敝人却认为不可草率视之,知其义而不知音如同断了一肢,知其音而误则如同装了假肢。此版加了注音确实方便太多,但注音错误之处却也太多,断然不可忽也。否则,以假为真,必将贻笑大方。
词目中的首字读音不是问题(当然此版也存在个别问题),因为《汉语大词典》对于首字是多音字的都结合字条给出了序号;首字之后的多音字在纸书中一般都在词目后加方括号说明。因此,我一开始想对纸书全文ocr,然后用正则提取词目加方括号,这样,虽有遗漏,当可快速纠此版注音之误。
但ocr过程太慢,错误也会很多,即使容许遗漏,手工校对量也不小。于是我再辟蹊径:先从此版提出字条加读音,再分为单音和多音。然后提取词目,大概30多万条,然后排除首字,只留下其它字有在前面分出的多音字表中的词条,大概余下了一半,但数目还太庞大。又排除在《现代汉语大词典》中的词条,但《现代汉语大词典》与《汉语大词典》比实在太小,排除掉的条目少得可怜,几乎可以忽略,待人工校对条目还有13万条左右。
一计不成,又生一计。前几天承蒙坛友惠赐《汉语大词典词目音序索引》,但一时不知如何利用。
图片
【此书包括读音、词条、纸书页码及AB面】
此索引虽以读音为序,但和我们习惯的音序不同。习惯的排序是先以字为单位,再按音排序,这个索引是把一个词中所有的拼音字母合在一起排序。如“阿辉”“阿兰”“哀哀”三词,前面就是习惯音序排法,而这个索引则是“阿辉”“哀哀”“阿兰”,因为aiai合起来比alan靠前。我把此版中所有条目(字+词)的读音以及页码都提取出来,然后把声调用1234替换,再按字母排序,就整理出一个与此音序索引顺序一致的待勘误表(包括单字)。


与上表对比,很容易发现“阿伯”“阿傍”“阿旁”的注音都是错的。

目前觉得这个方案还是可行的,虽然条目众多,但:
一、音序索引一书只有1500页左右,一天校对5页,一年可望完工;
二、校对时不少词条一看就知道注音对错,不确定的再和音序索引对照或根据页码查找纸版;
三、如果实在觉得太多,可以拿利用第二个思路排除后的词条进行音序排序后校对,当减少一半工作量。
何况校对读音时也可顺带发现一些其它问题,比如词条有无缺漏,有无错字等。如果能根据音序索引把此版的页码也分出AB面,就能为图像版的进一步切割打下基础。

不知道我的想法可行吗?不知道有同好愿意一起校对吗?不知道大神有更好的办法吗?

2 Likes

没有更好的办法的话,我先报个名,微信名 Yohi75
有事微信联系我

依我个人的浅见,还有一个方法:

1.ocr《汉语大词典词目音序索引》,提取词头和汉语大词典词目音序索引》的页码。

2.词头可以用电脑和《汉语大词典》的词头互校,找出ocr错误的词头。

3.根据词头和《汉语大词典词目音序索引》的图像,做图像词头索引版的mdict。不必做切词,就做整页版。

4.把这个《汉语大词典词目音序索引》的图像索引版mdict和《汉语大词典》放在一起检索。需要知道注音时,看一下《汉语大词典词目音序索引》的注音就行。

1 Like

多谢!多一个人,工程立马就可减少一半 :joy:

嗯,我死脑筋,忘了三种方法是可以结合的
原因之一是对这个音序索引的ocr质量不抱太大希望,太模糊了,不要说拼音,就词头恐怕错误率也很高。
不过可以试试看,也许通过比对,可以把校对范围缩小不少呢。

你也许可以考虑开个帖子让各路高手讨论ocr工具和技术,来个ocr“华山论剑”。

1.从《汉语大词典词目音序索引》的图像中选3页有代表性的图像,上载于此。

2.征求各方高手用自己的软件及技术ocr这3页,找出最佳解决方案。

讯飞据说可以ocr拼音,但只有试用版。百度的PaddleOCR是免费的,但令人望而生畏。

finereader做这种分栏的词汇列表,效果不好。汉王比较能做表格式文字,但似乎没看到有人在用了。

用comicviewenhancer先把整页批量切成4块,顺便调整dpi,效果可能会好一点。我在这方面没有经验。

dpi太低的页,放大一点capture全页,重存的图像达到300dpi,ocr效果可能可以改进,但好像无法批量这样做,用人工太费劲了。

俺沒注意過大詞典的注音,只能說一下辭源的狀況當參考。辭源雖然電子數據幾乎可靠, 但若要給複合詞填注音,會發現詞目首字會標subscript號碼(分辨讀音),但有的首字忽略標號碼。
非首字,IIRC都不標讀音號。重點是這些非首字的字,仔細看字條,也有不少含糊的狀況,不知道該採取哪一個釋義和讀音。也就是說,需要解讀,解讀也未必有一定的結論。

大詞典應當有很多需要使用者解讀的讀音案子。這不是ocr和校訂能解決的問題。

用ComicEnhancerPro对图片 进行放大、加大gamma值、变为黑白或者4色等操作;
然后切块分栏,再OCR可能好些

说实话不知道为什么对这些读音那么看重,例证来源有些是话本,即供说书人用的,记载的都是方言发音吧,全国那么多方言而且还在不断变化。

可以随用随查,最多搞个图片版方便检索。花时间OCR这个,真的不如把问题多多的《汉语大字典》文本完善完善

辞源电子数据虽然可靠,但词条的拼音却也是后来加上的。我在辞源的帖子中讨论过:

发现“大行”的注音是错的,本也以为辞源对首字以外的疑难字和容易引起混淆的多音字加注拼音,那么不注的多音字就应该读第一个音,现在看来“容易引起混淆的多音字”说法可疑,在这里它不是说多音字是容易引起混淆的,而是有些多音字是容易引起混淆的。到底哪些容易混淆哪些不会,编写者说了算。 由此产生一个问题,对整个词条注音代价很高吗?读者对这个没有要求吗?为什么《辞源》《汉语大词典》等都选择只注首字,对其它字却想注就注不想注就不注呢?怪哉!

“大行”应该读da xing,《辞源》文字版却注为da hang。《辞源》对于词条中首字以外的多音字的读音,是加注那些“容易引起混淆的多音字”,而什么叫容易什么叫不容易,实在模糊,所以《辞源》文字版mdx根据词目的首字以及其它字音的提示本来是个不错的主意,但像“大行”,也许对于人来说,读哪个音不容易混淆,但对于机器呢,没有提示的情况下到底读hang还是xing呢,甚至哪个音更常用它都不知道。《汉语大词典》好一点,当一个多音字几个音都常用时,它都做了说明,它就注了“大行”的“行”读xing。但它对一个常见一个少见的多音字,就懒省事,如果读常用音就不说明。

我奇怪的是,不论《辞源》还是《汉语大辞典》,编者都已经对每个词的读音都心中有数,但就是为了省一点版面不愿意全注出来,给读者造成很多不便,尤其是电子词典的使用者,书有上下文,电子词典本来是为了方便,现在还得翻翻翻……

@ endnote@ shaoshi
多谢提供提高ocr质量的思路

呵呵,读音当然没有意义那么重要,但有这个条件了还是希望能有正确的注音,毕竟音形义缺一不可。
《汉语大字典》没有《汉语大词典》用得多,总感觉后者基本包括前者(除字源方面),另外隔壁好像正在做《汉语大字典》的切词版。

为什么?百度ocr的质量还是不错的,原来我不知道PaddleOCR,这两天搜python ocr才发现它,正准备试试呢!

2 Likes

现代汉语大词典就有拼音,跟汉语大词典也是一家人 :rofl:

它的词条不到《汉语大词典》三分之一

辭源mdx,後來加上的復詞注音,我曾經跟《大辭海》的注音比對了一下,差距有三千多,大多的差距指出錯誤,其他是因為《辭源》、《大辭海》的讀音說法不同。所以拿《大辭海》的注音來補正辭源mdx也不是辦法。後來我放棄加復詞注音的意圖,所涉及到的問題不僅是花人工能決絕的。

多音字,尤其是復詞裡的多音字,異體字多,沒有固定寫法。辭源對這些不同寫法的復詞,提供的信息偶爾出矛盾:說“A字通B字"、“A字同B字”,但給A和B不同讀音說法,理論上兩個字是互換的,居然讀音不同,豈有此理?!(目前想不起具體例子,起碼有幾個案子。)但古代字書的讀音說法不合,時代也不同,要編輯者任性採納一個,壓抑其他的,有點為難他們哈哈。

1 Like

昨天折腾了半天,安装PaddleOcr没有成功。只得考虑百度ocr ,网上找了一段调用代码,先存着。

import base64
import requests

class CodeDemo:
    def __init__(self,AK,SK,code_url,img_path):
        self.AK=AK
        self.SK=SK
        self.code_url=code_url
        self.img_path=img_path
        self.access_token=self.get_access_token()

    def get_access_token(self):
        token_host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={ak}&client_secret={sk}'.format(ak=self.AK,sk=self.SK)
        header={'Content-Type': 'application/json; charset=UTF-8'}
        response=requests.post(url=token_host,headers=header)
        content = response.json()
        access_token=content.get("access_token")
        return access_token

    def getCode(self):
        header = {
            "Content-Type": "application/x-www-form-urlencoded"
        }
        def read_img():
            with open(self.img_path, "rb")as f:
                return base64.b64encode(f.read()).decode()

        image = read_img()
        response=requests.post(url=self.code_url,data={"image":image,"access_token":self.access_token},headers=header)
        return response.json()

if __name__ == '__main__':
    AK = "" # 官网获取的AK
    SK = "" # 官网获取的SK
    code_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate" # 百度图片识别接口地址
    img_path=r"" # 识别图片的地址

    code_obj=CodeDemo(AK=AK,SK=SK,code_url=code_url,img_path=img_path)
    res=code_obj.getCode()
    code=res.get("words_result")[0].get("words")
    print(res)
    print(code)

识别结果差强人意

{'words': 'aba阿八', 'location': {'top': 136, 'left': 157, 'width': 195, 'height': 57}}
{'words': '1', 'location': {'top': 131, 'left': 1079, 'width': 31, 'height': 46}}
{'words': ' aihuang矮黄', 'location': {'top': 153, 'left': 1750, 'width': 242, 'height': 46}}
{'words': 'aba阿八11-923B', 'location': {'top': 284, 'left': 159, 'width': 319, 'height': 62}}
{'words': "ai'ai3-376A", 'location': {'top': 295, 'left': 627, 'width': 307, 'height': 46}}
{'words': ' aican哀惨3-340A', 'location': {'top': 297, 'left': 1083, 'width': 321, 'height': 50}}
{'words': '3-335B', 'location': {'top': 303, 'left': 1602, 'width': 134, 'height': 37}}
{'words': 'aba阿爸11-930A', 'location': {'top': 336, 'left': 159, 'width': 318, 'height': 42}}
{'words': "ai'ai嘊嘊3-492B", 'location': {'top': 336, 'left': 627, 'width': 304, 'height': 45}}
{'words': ' aifa艾髮9-272B', 'location': {'top': 328, 'left': 1545, 'width': 292, 'height': 60}}
{'words': 'abai阿伯11-928B', 'location': {'top': 378, 'left': 192, 'width': 291, 'height': 40}}
{'words': 'aiai皚8-274A', 'location': {'top': 381, 'left': 628, 'width': 306, 'height': 39}}
1 Like

试试这个 在线文字识别转换 - 图片转文字工具OCR - Powered by Yelky (wdku.net)
看看准确率如何。
超出两三页要收费,貌似是云端AI的OCR引擎

2 Likes

多谢!识别中文百度还是有优势的。准备再学习一下百度的技术文档,试试高精度接口看识别率有提高没有

所以有百度賬戶就可以用啦?他沒有自己的界面,使用者要提供script?(我也想學學)

先要申请,步骤网上搜一下。它提供了一些接口,我用的是python

把百度ocr的高精版(含位置)的免费次数用完了,暂时大概识别了近三万条,通过对比,可能有错误的有九千条,招募有愿意校对的同好。