在线手写汉字识别工具

知道汉字长什么样子,但是就是不知道具体是啥字,如果能直接写出来,然后计算机能直接识别出来,岂不是很神奇,现在就介绍一个可以通过浏览器既可以实现在线手写汉字识别的在线工具

废话不多说,上效果图:

 是不是很神奇

在线demo地址

index.html

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title>HanziLookupJS demo</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <style>
    body { background-color: #fafafa; font-family: Verdana, sans-serif; padding-top: 70px; }
    div, h1, h2 { position: relative; float: left; box-sizing: border-box; height: auto; overflow: auto; width: 100%; margin: 0; }
    h1 { margin-bottom: 8px; }
    h2 { font-weight: normal; }
    .content, .header { 
      width: 810px; margin: 0 auto; float: none; background-color: #6688aa; padding: 20px; color: #f0f0f0;
      border-radius: 8px;
    }
    .header { text-align: center; margin-bottom: 20px; }
    .header a { color: #fce566; text-decoration: none; }
    .colLeft { width: 270px; }
    .colRight { width: 500px; padding-left: 30px; }
    .drawingBoard { width: 250px; height: 250px; cursor: crosshair; clear: both; overflow: hidden; background-color: #fafafa; }
    .drawingBoard span { display: none; }
    .drawingBoard.loading { background-color: #f0f0f0; }
    .drawingBoard.loading span { display: inline; color: #606060; }
    .commands { width: 250px; margin-top: 3px; }
    .cmd { width: 122px; background-color: #fce7c0; text-align: center; cursor: default; padding: 3px; color: #606060; }
    .cmd.cmdUndo { float: right; }
    .cmd:hover { background-color: #f1d7a6; }
    .charPicker { 
      border: 1px solid #a0a0a0; padding: 3px; height: 70px; width: 400px; font-size: 48px; background-color: #fafafa; overflow: hidden; 
      color: #606060;
    }
    .charPicker span { cursor: default; }
    .hanziLookupChars { margin-bottom: 20px; }
  </style>
</head>
<body>
  <div class="header">
    <h1>HanziLookupJS demo</h1>
    <a href="https://github.com/gugray/HanziLookupJS">github.com/gugray/HanziLookupJS</a>
  </div>
  <div class="content">
    <div class="colLeft">
      <h1>Stroke input</h1>
      <div class="drawingBoard loading"><span>Loading...</span></div>
      <div class="commands">
        <div class="cmd cmdUndo">Undo</div>
        <div class="cmd cmdClear">Clear</div><br/>
      </div>
    </div>
    <div class="colRight">
      <h1>Recognized characters</h1>
      <h2>Original HanziLookup data</h2>
      <div class="charPicker hanziLookupChars"></div>
      <h2>Make Me a Hanzi data</h2>
      <div class="charPicker mmahLookupChars"></div>
    </div>  
  </div>

  <script src="./library/lib/jquery-3.1.1.min.js"></script>
  <script src="./dist/hanzilookup.min.js"></script>
  <script>
    var hanziLookupDemoApp = (function () {
      var _filesToLoad;
      var _drawingBoard;

      $(document).ready(function () {
        // Only fetch data (large, takes long) when the page has loaded
        _filesToLoad = 2;
        HanziLookup.init("mmah", "./dist/mmah.json", fileLoaded);
        HanziLookup.init("orig", "./dist/orig.json", fileLoaded);
      });

      // Initializes mini-app once all scripts have loaded
      function fileLoaded(success) {
        if (!success) {
          _filesToLoad = -1;
          $(".drawingBoard span").text("Failed to load data.");
          return;
        }
        --_filesToLoad;
        if (_filesToLoad != 0) return;
        // All data scripts loaded
        $(".drawingBoard").removeClass("loading");
        // Create handwriting canvas (this is optional, you can bring your own)
        _drawingBoard = HanziLookup.DrawingBoard($(".drawingBoard").first(), lookup);
        // Undo/redo commands - have to do with input
        $(".cmdUndo").click(function (evt) {
          _drawingBoard.undoStroke();
          _drawingBoard.redraw();
          lookup();
        });
        $(".cmdClear").click(function (evt) {
          _drawingBoard.clearCanvas();
          _drawingBoard.redraw();
          lookup();
        });
      }

      // Fetches hand-drawn input from drawing board and looks up Hanzi
      function lookup() {
        // Decompose character from drawing board
        var analyzedChar = new HanziLookup.AnalyzedCharacter(_drawingBoard.cloneStrokes());
        // Look up with original HanziLookup data
        var matcherOrig = new HanziLookup.Matcher("orig");
        matcherOrig.match(analyzedChar, 8, function(matches) {
          showResults($(".hanziLookupChars"), matches);
        });
        // Look up with MMAH data
        var matcherMMAH = new HanziLookup.Matcher("mmah");
        matcherMMAH.match(analyzedChar, 8, function(matches) {
          showResults($(".mmahLookupChars"), matches);
        });
      }

      // Populates UI with (ordered) Hanzi matches
      function showResults(elmHost, matches) {
        elmHost.html("");
        for (var i = 0; i != matches.length; ++i) {
          elmHost.append("<span>" + matches[i].character + "</span>");
        }
      }
    })();
  </script>
</body>
</html>

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PyTorch是一个基于Python的开源机器学习库,它提供了丰富的工具和功能,用于构建深度神经网络模型。对于手写汉字识别,你可以使用PyTorch来实现一个卷积神经网络(CNN)模型。这个模型可以从手写汉字的图像中学习并进行分类识别。 为了实现手写汉字识别,你可以按照以下步骤进行操作: 1. 数据准备:首先,你需要准备一个手写汉字的数据集。这个数据集应包含手写汉字的图像和相应的标签。你可以使用已有的数据集,也可以自己创建一个。 2. 数据预处理:对于数据集中的图像,你需要进行预处理,包括图像的缩放、归一化、裁剪等操作。这些操作有助于提高模型的训练效果。 3. 模型设计:接下来,你需要设计一个卷积神经网络模型。这个模型可以包括卷积层、池化层、全连接层等组件。你可以根据需求和实际情况来设计模型的结构。 4. 模型训练:使用准备好的数据集和设计好的模型,你可以开始进行模型的训练。在训练过程中,你需要定义损失函数和优化算法,并迭代地调整模型的参数,以使损失最小化。 5. 模型评估:在训练完成后,你可以使用测试数据集对模型进行评估。通过计算模型在测试数据上的准确率或其他指标,你可以了解模型的性能和表现。 6. 模型应用:完成模型的训练和评估后,你可以将模型应用于实际场景中的手写汉字识别任务。你可以输入一张手写汉字的图像,通过模型进行分类,得到识别结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值