当前位置: 首页 > 工具软件 > cnchar > 使用案例 >

编写cnchar-draw的demo批量识别笔画

国晟睿
2023-12-01

编写cnchar-draw的demo批量识别笔画

1. 先进入makemeahanzi/中,运行generate_words.py生成svg_words.txt,然后将生成的svg_words.txt复制到cnchar/npm/中去

2. 再安装一个Node.js的环境,参照下面的博客,有报错直接根据报的错补装一些东西即可

    [Linux系統] Ubuntu 安裝 Node.js

3. 配置cnchar-draw的环境

    下载好cnchar,将要运行的demo脚本放在./cnchar/npm下,然后在当前位置打开终端$ node loadtxt.js运行就行了,之后会生成outputs.txt,每一行记录了 "汉字 笔画序列"

var cnchar = require('./cnchar/index');
var poly = require('./poly/index');
var order = require('./order/index');
var trad = require('./trad/index');

cnchar.use(order, trad, poly);

var fs = require("fs");
var readLine = require("readline");

// SVG中的有一些字cnchar是不能进行笔画解析的,这些字直接去掉就行了
function readFileToArr(fileName, callback) {

    var arr = [];
    var readObj = readLine.createInterface({
        input: fs.createReadStream(fileName)
    });

    // 一行一行地读取文件
    readObj.on('line', function (line) {
        console.log(cnchar.stroke(line, 'order', 'shape'));
        arr.push(line + " " + cnchar.stroke(line, 'order', 'shape'));
    });
    // 读取完成后,将arr作为参数传给回调函数
    readObj.on('close', function () {
        callback(arr);
    });
}


// 读取数据后,处理完成后放入outpu.txt
readFileToArr('./words.txt', function (arr) {
    // 通过回调得到的,按行获得的数据
    console.log(arr);

    var tempArr = [];

    arr.forEach((ele) => {
        tempArr.push(ele);
    });
    fs.writeFile('./outputs.txt', tempArr.join("\n"),
        function (err) {
            if (err) throw err; 
        });
});

相关github:

  1. https://github.com/skishore/makemeahanzi
  2. https://github.com/theajack/cnchar
 类似资料: