罗贝尔法汉词典(一词一图)

原始文件来自 Index of /尚未整理/集合/Other language Dictionaries/French/法语111/一些法语mdx词典/ ,好像是 @xliley 制作的,谢谢他付出的辛劳。

我稍微修改了mdx,添加了css文件,使图片的呈现或许更美观一些。mdd文件用原来的即可,没有改动。

——更新,词头索引已进一步提取,未全面检查,不担保无误。生成前txt源文件也传到这里,如有错误,可自行修改重新打包。

词头索引有点问题,没有进一步提取。@wynick27 可以用提取拉鲁斯词典词头的程序再处理一遍。

罗贝尔法汉词典(一词一图).mdx (257.3 KB)
robert.css (528 字节)

罗贝尔法汉词典(一词一图).txt (2.1 MB)

2 个赞

这个词的后缀表示方法不一致,要改程序才行,可能要单独指定规则处理。

罗贝尔法汉词典不如拉鲁斯重要,收词量少,特色是直接用中文释义,简明,例句多且完整。在不多的法汉词典里,也算佼佼者了。

因为图像底本算不上很清晰,文本化可能没必要也麻烦,不过在现成的切图版mdx基础上,倒是可以继续改造完善,跟拉鲁斯、新法汉等形成高中低搭配。

这个是不是也有法文版,我准备解决加标签格式化后接下来研究html去格式化和txt文本比较插入的问题,应该可以同时解决日汉和朗氏德语词典的问题。

它有法文版,文本pdf,Dictionnaire du Français - Josette Rey-Debove - Le Robert & Cle International。

朗氏德汉不容易插入处理,文本切得很碎,且德文并不完全一致,德文版把代字符“-”都给还原成原始单词了。

Dictionnaire du Français - Le Robert & Cle International这个文本pdf实际已经把词头给提取好了,需要设法从它里面抽取相关数据。

这个不难,fitz库可以查字体和颜色的,也可以直接输出xml。

我用 BeautifulSoup 处理文本pdf转换出来的html,试了各种方法,都是没名堂,因为转换成的html很随意,标签是乱加的,并没有严格的一致性。

索性换了办法,用 ai 处理,初步浏览,效果貌似不错。

罗贝尔词头 待处理.txt (46.1 KB)
罗贝尔词头 扩充.txt (77.5 KB)

词头索引已进一步提取,未全面检查,不担保无误。生成前txt源文件也传到主帖,如有错误,可自行修改重新打包。

pdf转换我来试试吧,pdf是zlib上4800多页那个吗

提取了法文版的文本,转成了json,没有做精细标签化,只给词头,序号和注释加了标签。不过要做也不难,法文版词头是完整的,可以直接用,转换下大小写就好了。
法语版词条数20980,比现在的图片少,不知道是哪边有错。

robert.zip (2.8 MB)

补一个夸克识别的中文版:
罗贝尔法汉词典_quark.docx (7.5 MB)

1 个赞

你是用fitz直接转的吗?我试了转html再提取词头不好用,就没试别的方案了。

pdf这种文件格式可谓不思进取,也落后于时代了,它只保证最终视觉呈现的正确和一致,并不维护原始的文本flow、layout和结构,把这些信息也存储下来,并不会增加多少数据量,却无疑会大大方便数据进一步的转换和利用。

是的,代码这么写的,用的dict模式:

import fitz
import os
import json


def process_page(page):
    words = []
    dict_text = page.get_text("dict")
    for block in dict_text["blocks"]:
        word = {'head':[], 'xml': '', 'type': 'text'}
        
        if block["type"] == 0:  # text block
            for i,line in enumerate(block["lines"]):
                for j,span in enumerate(line["spans"]):
                    if span['size'] > 20:
                        print('Large letter found:', span['text'])
                        word['type'] = 'letter'
                    elif span['color'] == 0xff:
                        if span['text'].endswith('.'):
                            word['xml'] += '<num>' + span['text'] + '</num>'
                            continue
                        elif span['text'] == '■':
                            pass
                        elif span['text'].strip() == '':
                            pass
                        else:
                            word['head'].append(span['text'])
                            word['type'] = 'word'
                            word['xml'] += '<word>' + span['text'] + '</word>'
                            continue
                    elif block['bbox'][0] >= 90:
                        word['xml'] +=  span['text']
                        word['type'] = 'rem'
                        continue
                    if j == 0 and word['xml'] != '':
                        word['xml'] += ' '
                    word['xml'] += span['text']
        words.append(word)
    
    return words

def export_pdf_pages_to_html(pdf_path, output_file, start_page):
    doc = fitz.open(pdf_path)
    words = []
    for page_number in range(start_page - 1, len(doc)):
        page = doc[page_number]
        result = process_page(page)
        for word in result:
            if word['type'] == 'rem':
                words[-1]['xml'] +=  '<rem>' + word['xml'] + '</rem>'
            elif word['type'] == 'word':
                words.append(word)
            elif word['type'] == 'letter':
                continue
            else:
                words[-1]['xml'] += word['xml']
            del word['type']

    with open(output_file, "w", encoding="utf-8") as f:
            json.dump(words, f, ensure_ascii=False, indent=2)
    print(f"已导出所有页面内容到 {output_file}")

# 使用方法
export_pdf_pages_to_html(
    pdf_path="Dictionnaire du Français (Josette Rey-Debove) (Z-Library).pdf",
    output_file="robert.json",
    start_page=536
)
1 个赞

在这个帖子里发现了商务印书馆《法汉小词典》的xml数据:
法汉小词典xml.zip (1.3 MB)

不知道具体来源是什么,但文字质量好像比较高。我把它提取成了纯文本,且做了一个扩充过索引词头的mdx词典。

有xml数据,转制成加了标签的html文本也不难,可以用css美化一下形式,但这个工作就留待他人了。

法汉小词典 文本.txt (2.5 MB)

法汉小词典.mdx (1.2 MB)
法汉小词典_mdx_source.txt (3.0 MB)