文本地址智能识别组件(三)

前言

姓名+电话+地址识别,前面的文本地址智能识别组件(一)文本地址智能识别组件(二)可以满足地址识别的基本需求,但是经过不断的测试和真实场景的使用, 发现还是存在一些细节问题, 本着不到黄河心不死呕心沥血的实现了终极版本文本地址智能识别组件(三) . 通过参考快递公司的识别功能, 自己重新写了一下,功夫不负有心人, 终于达到了作者想要的效果.

方案

首先我们仓考之前的思路,通过处理字符串来达到匹配的结果. 电话肯定是可以获取到的, 地址的话, 我们单独去数据库获取
1.匹配需要识别文本中的电话号码
2.假设地址的省市区输入完全正确,我们直接匹配库里面的数据,然后对比省市区的名称,省市区名称前面的就是姓名, 如果姓名在详细地址后面,那就无法识别了
3.地址输入只有两级或者一级, 这种情况就需要多处理几次了, 首先查询省名称, 省名称为空责查询市名称,查询到市名称就根据市名称查询出对应的省名称, 在查询市名称下面的区名称, 然后和文本中的地址比较.
话不多说, 直接放大招

/**
	这是service的实现方法
	text传入参数为需要识别的文本信息
	姓名为匹配到的地址前面一截
*/

@Override
	public Map<String, Object> getTextRecognitionInfo(String text) {
   
		//去除所有标点符号和特殊符号
		String details = text.replaceAll("\\pP|\\pS|\\s+", "").trim();
		Map<String, Object> data = new HashMap<String, Object> ();

		//匹配文本中的电话号码
		String phone = "";
		Pattern phoneReg = Pattern.compile("\\d{7,17}");
		Matcher phoneMatcher = phoneReg.matcher(details);
		while (phoneMatcher.find()) {
   
			phone = phoneMatcher.group();
		}
		phoneReg = Pattern.compile("1[345678]\\d{9}");
		phoneMatcher = phoneReg.matcher(details);
		while(phoneMatcher.find()) {
   
			phone = phoneMatcher.group();
			details = details.replaceFirst(phone, "");
		}
		data.put("phone", phone);
		details = details.replaceFirst(phone, "");

		//直接完整匹配省市区
		RegionDTO region = regionMapper.getMatchingRecognition(details);
		//解析省
		int provinceLength = 0;
		String provinceTemp = "";
		//可以完整匹配出来地址
		if (region != null) {
   
			data.put("region", region);
			String name = details.substring(0, details.indexOf(region.getProvince()));
			data.put("name", name);
			details = details.replaceFirst(name, "");
			data.put("details", details.replaceFirst(region.getProvince()+region.getCity()+region.getCounty(), ""));
			return data;
		} else {
   
			region = new RegionDTO();
			//查询所有的省
			List<KdRegion> provinceList = regionMapper.getRegionListByType(1);
			for (KdRegion province : provinceList) {
   
				String tem;
				if (province.getRegionName().contains("省")) {
   
					tem = province.getRegionName().replace("省","");
				} else if (province.getRegionName().contains("市")) {
   
					tem = province.getRegionName().replace("市","");
				} else if (province.getRegionName().contains("自治区")) {
   
					tem = province.getRegionName().replace("自治区","");
				} else {
   
					tem = province.getRegionName();
				}
				if (details.
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
随着我国经济的快速发展,工业生产用电与生活用电总量与日俱增,对电力系统形成了巨大的压力与挑战。高压开关等高压电力设备作为电力系统的枢纽,其供电的安全及稳定备受关注。高压电力设备发生故障主要是由于运行时间过长或载流量过大,造成设备的接头部位温度过高而引起。如未得到及时处理,不仅会影响设备自身的寿命,严重的话甚至会导致整个电力系统的崩溃,给国家和群众造成巨大的经济损失。因此针对以上现状,国家颁布了电力部门的相关规定,要求对设备开关定期进行温度巡检以保证其能够安全运行。   目前主要使用手持式温度检测仪对高压电力设备进行温度巡检,只有在极少数地区仍然采用石蜡测温法。石蜡测温法主要是通过观察放置在触点上的示温蜡片的颜色变化来判定其温度,很显然该方法的测温准确性较差。手持式温度检测仪主要是采用红外测温技术采集各触点温度,在整个巡检过程中,需要工作人员人工记录下各温度数值,检测完成后再将数据绘制成数据表格,进行最终的分析和使用。这一过程不仅浪费体力、花费时间,同时也导致了数据准确性的极大降低。在高压电力设备急剧增加的现状下,该弊端愈加明显。   本文在对目前手持式测温设备在国内外的使用情况、设备结构特点以及国内多数地区高压电力设备的结构进行调查的基础上,设计了一款同样采用红外测温技术但却结合了图像处理与U盘存储技术的智能测温仪。该仪器采用MSP430F149单片机作为主处理器,该处理器的极低功耗极易满足该手持设备的使用背景。其中,主要由红外温度传感器   A2TPMl334L5.50AAl20及部分外围电路完成触点温度的采集工作,由图像传感器OV9120、TMS320VC5509ADSP作为主要组件完成设备身份信息的识别,即对含有设备位置信息的条码图像进行识别。其中该模块采用双处理器结构,由单片机作为其逻辑控制器,协调各芯片的工作。时间模块的主要目的是为了对温度采集的时间进行记录,主要由实时芯片DSl302完成。U盘读写模块则是使用PB375A将保存的时间、位置及温度信息等以文本文件的格式存储到设备外插的U盘中。整个巡检过程无需复杂的人工参与,在提高工作效率的同时,避免了人为错记、漏记等问题,提高了数据的准确性与完整性。
请下载作者此软件的免费版本,见资源上面几行 ============================================== 睿智文本语音朗读组件包是一款TTS工具软件,它集成了对各种文本进行语音朗读的功能。但它不是一种传统意义上的TTS工具,它本身没有采用Microsoft Speech SDK技术,也没有采用Microsoft Simplified Chinese或Microsoft Sam等专业语音库。它从语音库的格式、文本识别、语音播放等全部采用专有内核开发,具有完全独立的知识产权。 1.采用DirectX技术录制、朗读和播放语音,可以在播放过程中随时更改朗读播放的速度、语调、音量等。支持在朗读播放语音的同时播放背景音乐或插播各种格式的音乐。支持计算机所支持的各种音频格式来创建生成语音库。 2.采用多线程技术。在文本智能识别和语音的朗读均采用了多线程技术,因此不会存在卡带等现象,即使同时在播放多种(个)语音或音乐时也可以流畅自如。系统占用资源并不太大,不会影响用户要进行的其它操作。 3.使用ATL COM组件技术,将对文本的朗读和播放集成到了Internet Explorer浏览器和Microsoft Word中,可以随时自由的朗读当前网页或WORD文档。 4.自定义了一套朗读控制关键字,可以通过在文本中插入这此关键字实时控制朗读和播放形式。 5.语音库从录音到制作加工到测试完全对用户开放,系统在对文本进行朗读播放时可通过使用控制关键字实现多个语音库混合播放的功能,它支持同时混合朗读播放的语音库数量达到100个。 6.提供了多种朗读播放文本的方式,除可以直接在Internet Explorer浏览器和Microsoft Word中播放外,还可以在控制台使用命令行模式来朗读和播放,支持对文本文件的朗读播放,也支持对系统粘贴板中的内容进行播放。 7.支持程序员进行二次编程开发,可以通过编程,在你的程序中直接调用组件中提供的Win32 API函数来实现功能更满足要求的专业软件。组件系统提供了VC、VC.NET、VB、VB.NET、C#等各种开发工具调用组件API函数的例程,你只需要几行代码应可以生成功能强大的TTS软件。 8.语音智能识别C++源码完全对用户开放,源码可以根据用户预生成的语音库形式自动创建生成。用户可以自由的对源码进行修改和编绎,通过增加或修改一些代码,使其智能识别的能力进一步提高,或使其更加满足专业需求。代码被编绎后,以后朗读文本时,就会以你在代码中的要求进行朗读和播放了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值