2021年山东大学软件学院暑期实训——骨刻文字数字化识别开发与学习笔记2

本文主要是介绍2021年山东大学软件学院暑期实训——骨刻文字数字化识别开发与学习笔记2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

近期工作

  • 工作说明
  • 抽取甲骨文字库数据
    • 1、收集甲骨文-汉字比对大全表
    • 2、对甲骨文图片进行提取
    • 3、对甲骨文对应汉字进行提取
    • 4、对图片和汉字做对应
  • 抽取小篆字库数据
    • 1、获取简体字常用字库
    • 2、根据字库对网站进行爬取
      • 3、小篆字体收集结果

工作说明

目前的工作是为了建立甲骨文-汉字比对库,以及小篆-汉字比对库,故很自然就是要收集较为完整且干净的甲骨文、小篆数据。
针对甲骨文文字以及小篆文字的

抽取甲骨文字库数据

1、收集甲骨文-汉字比对大全表

下图为甲骨文对照表,共有1602个甲骨文图像以及对应的现代简体中文。且文件为pdf格式,目标是对里面甲骨文图片进行分割。
在这里插入图片描述

2、对甲骨文图片进行提取

这里主要用到的工具为python的fitz库,这个库可以通过正则表达式对pdf文件里面的图片元素进行提取。
关键代码为:

def transform(s_path, d_path):# 使用正则表达式来查找图片checkXO = r"/Type(?= */XObject)"checkIM = r"/Subtype(?= */Image)"# 打开pdfpdf_doc = fitz.open(s_path)# 图片计数imgcount = 0lenXREF = pdf_doc.xref_length()# 遍历每一个对象for i in range(1, lenXREF):# 定义对象字符串xref_text = pdf_doc.xref_object(i)isXObject = re.search(checkXO, xref_text)# 使用正则表达式查看是否是图片isImage = re.search(checkIM, text)# 如果不是对象也不是图片,则continueif not is XObject or not isImage:continueimgcount += 1# 根据索引生成图像pix = fitz.Pixmap(doc, i)

3、对甲骨文对应汉字进行提取

这里主要用到的工具为python的pdfplumber库,这个库可以通过正则表达式对pdf文件里面的图片元素进行提取。

import pdfplumbertotal_charactor_list =[]
# 利用pdfplumber多个提取表格
with pdfplumber.open('duizhaobiao.pdf') as pdf:#对每一页的pdf进行文字提取for page in pdf.pages:for table in page.extract_tables():#所提取出来的字符可能是简体字,可能是None、空字符、英文字符for character_list in table:for character in character_list:if character ==None or character=="":passelse:#判断是不是简体字if ord(character) not in range(65,90+1):total_charactor_list.append(character)

4、对图片和汉字做对应

由于暂时没有定好甲骨文图片的编号,故不能单独给图片以汉字命名(会出现重名)。对图片进行编号需要小篆字库确定再进行。
如图,文件夹中图片的顺序是与txt文件中的顺序对应的。
在这里插入图片描述
下一步准备将数据入库。

抽取小篆字库数据

由于网上所能收集到的小篆-简体字对照表比较难找,但是有提供根据汉字查找的功能,故选择下面古文字字源网站进行爬取。

1、获取简体字常用字库

简体字的常用字库大约有七千字左右,但不是每个现代汉字都有对应的小篆字体。

2、根据字库对网站进行爬取

这一步使用selenium对小篆数据进行截图,主要用到Python的PIL库和selenium库。
关键步骤在于①模拟浏览器操作,对某汉字进行搜索;②若存在对应小篆字体则进行截图。

        #模拟浏览器进行操作etymologySearchChar =driver.find_element_by_id("etymologySearchChar")etymologySearchChar.clear()#对某个字进行输入etymologySearchChar.send_keys(line[0])etymologySearchButton=driver.find_element_by_id("etymologySearchButton")etymologySearchButton.click()time.sleep(5)#找寻含有小篆字体的元素background_image =driver.find_elements_by_xpath('//div[@data-target="#etymologyModal"]')            for i in range(len(background_image)):time.sleep(0.1)#确定存储路径image =background_image[i]final_path =path+"\\"+image.text+'.png'#确定图片两个角的坐标left = image.location['x']+5top = image.location['y']right = image.location['x'] + image.size['width']-2bottom = image.location['y'] + image.size['height']-2driver.save_screenshot(final_path)#对图片进行截图photo = Image.open(final_path)photo = photo.crop((left, top, right, bottom))#存储截图photo.save(final_path)

3、小篆字体收集结果

可以看见有的文件夹是空的,证明该汉字并没有对应的小篆字体。等待下一步进行归类并放入数据库。
在这里插入图片描述

这篇关于2021年山东大学软件学院暑期实训——骨刻文字数字化识别开发与学习笔记2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/638867

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹