9 Star 72 Fork 20

AntZSolution/Z-RareCharacterSolution

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

Z-RareCharacterSolution

Z-RareCharacterSolution 是蚂蚁集团开源生僻字解决方案,围绕生僻字领域长期存在的各种痛点,提供了最小粒度的基础能力,如:生僻字“输入法”,生僻字字体、生僻字姓名识别、转码等,同时针对典型场景,也会推荐不同的基础能力组合形成更适合自身业务的解决方案。

一、背景

中文是一种象形文字,所以姓氏用字显示的是更为古老的字形和字音,是历史和文化的延续,生僻字在当下的文化环境中不仅不会消失,相反还有复兴之势。具

  • 输入问题:生僻字录入一直是困扰生僻字用户的一个问题,现有的输入法对生僻字输入的支持度参差不齐。
  • 显示问题:由于操作系统支持的字体缺失,大部分生僻字都无法被正常显示。
  • 通行问题:生僻字用户在生活中会遇到各种各样的问题,如
    • 无法在各类 APP 中完成实名认证等
    • 无法在 APP 中查询公积金,社保等
    • 无法线上购买火车票等

为了解决以上的问题,Z-RareCharacterSolution 应运而生,可解决用户在 APP 内的输入,显示和通行问题。

二、功能简介

为了解决生僻字姓名在社会各类系统中存在的问题,Z-RareCharacterSolution 提供了以下的能力:

2.1 输入能力

为了解决生僻字输入问题,我们需要了一个能提供多样化输入模式、适配多端的生僻字输入组件,嵌入在需要输入生僻字的页面中,可以帮助用户准确地输入生僻字。

2.2 显示能力

为了解决生僻字显示问题,我们和阿里巴巴普惠体合作,请他们帮忙设计了汉字字体。并通过向生僻字用户推送消息下载或者主动触发下载的方式,在 APP 端内页面加载了这份字体从而解决了生僻字显示问题。

在web端,我们也提供了显示组件,对接显示组件也能解决生僻字显示问题。

2.3 姓名服务能力

为了解决生僻字用户在各类场景下的姓名互通互认问题,Z-RareCharacterSolution 提供了各类关键姓名服务, 使用者接入姓名服务能力后,可实现用户姓名在系统间互通互认。

如业务需要做用户身份信息的联网核查,当使用用户输入的姓名无法核查通过时,可使用姓名转码服务,将转码后的姓名再次尝试联网核查。

三、目录介绍

3.1 前端服务

frontend
├─utils  生僻字工具库
|   ├─types                      ts定义
|   ├─test                       单测
|   ├─src                        源码目录
|   |  ├─font-loader.ts          字体加载工具
|   |  ├─get-words-data.ts       字库数据获取工具
|   |  ├─index.ts                入口文件
|   |  ├─rare-words.ts           生僻字判断工具
|   |  ├─utils
|   |  |   ├─filter-and-sort.ts  查询候选字方法
|   |  |   ├─index.ts            工具类
|   |  |   └storage.ts           缓存工具
|   |  ├─contants                常量定义
├─input  输入组件
|   ├─pc-react                   输入组件电脑版
|   |    ├─src                   源码目录
|   |    |  ├─index.less         样式文件
|   |    |  ├─index.tsx          组件源码
|   |    |  ├─types
|   |    |  |   └font.ts         类型定义
|   |    |  ├─contants           常量定义
|   |    ├─docs                  文档说明
|   ├─h5-react                   输入组件手机版
|   |    ├─src                   源码目录
|   |    |  ├─index.less         样式文件
|   |    |  ├─index.tsx          组件源码
|   |    |  ├─utils              工具库
|   |    |  ├─typings            ts定义
|   |    |  ├─styles             样式库
|   |    |  ├─keyboard           键盘分类组件
|   |    |  |    ├─stroke        笔画键盘
|   |    |  |    ├─pinyin        拼音键盘
|   |    |  ├─hooks              自定义hooks
|   |    |  ├─context            共享数据
|   |    |  ├─contants           常量定义
|   |    |  ├─components         子组件库
|   |    |  |     ├─Popup        自定义弹窗组件
|   |    |  |     ├─OperationArea  操作按钮区域组件
|   |    |  |     ├─MatchWords     候选字区域组件
|   |    |  |     ├─MatchWordTips  信息提示其余组件
|   |    |  |     ├─InputValueDisplay  已输入字符区域组件
|   |    |  |     ├─ErrorPage    错误页组件
|   |    ├─docs                  文档以及demo
|   ├─ h5-svelte 输入组件vue或者jquery版本
|   ├─apmini  输入组件支付宝小程序版本
|   |   └README.md

3.2 后端服务

Z-RareCharacterSolution 项目服务端部分,即 rareCharacter(java 版本),主要包含提供各类关键生僻字姓名服务的实现。

  • api: 生僻字姓名接口服务
  • core: 核心业务模块
  • dal:数据访问模块
  • util: 工具类
  • test: 测试类

3.2 demo演示

通过demo演示,使用者可以一键在本地部署并运行,体验 Z-RareCharacterSolution 提供的各类生僻字能力。

  • .docker: docker 相关配置, 包括服务启动,字库创建和初始化等
  • server/src:服务端调用 rareCharacter 的示例
  • web: 可以体验生僻字输入和显示组件

四、快速开始

为帮助用户快速了解Z-RareCharacterSolution的服务能力,我们搭建了docker的示例,用户在几分钟内通过几个命令将docker在本地运行起来,以快速了解生僻字处理的各项能力。

4.1 环境准备

  1. docker
  2. JDK8
  3. Apache Maven 3.2.5 或者更高版本

4.2 下载代码

进入蚂蚁开源网站 https://gitee.com/ant-zsolution/Z-RareCharacterSolution,下载代码至本地

git clone https://gitee.com/ant-zsolution/Z-RareCharacterSolution.git

公安系统PUA映射关系可联系方正字库获取

4.3 启动demo

  1. 检查本地是否安装docker,输入
docker version

若未安装,请至https://www.docker.com/ 完成安装

  1. 本地进入Z-RareCharacterSolution/demo目录,执行
cd Z-RareCharacterSolution/demo
docker-compose up 
  1. 打开本地的浏览器,输入
127.0.0.1:80

正常展示页面,恭喜你已正常启动demo,可以体验Z字库生僻字解决方案能力了。

五、接入文档

六、联系我们

您可以通过提交issues、扫描下方二维码加入生僻字交流群

联系我们

如果字库缺乏你需要的汉字,也可以打开支付宝扫下方二维码选择生僻字征集提交生僻字给我们:

生僻字征集

七、感谢

  • Z字库生僻字解决方案使用的字体是由阿里巴巴普惠体提供的,感谢阿里巴巴普惠体对此项目的大力支持。

八、开源许可

Apache License 2.0 协议

九、已知用户

此处列出了已知在生产环境使用了 Z-RareCharacterSolution 全部或者部分组件的公司或组织。

已知用户

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

蚂蚁集团研发的生僻字解决方案,致力于解决蚂蚁内部录入、显示、存储,及机构之间的生僻字信息互通传输的问题,并可以作为开源方案提供给全社会公共服务系统接入使用。 展开 收起
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/ant-zsolution/Z-RareCharacterSolution.git
git@gitee.com:ant-zsolution/Z-RareCharacterSolution.git
ant-zsolution
Z-RareCharacterSolution
Z-RareCharacterSolution
main

搜索帮助