diff --git a/.codegraph/.gitignore b/.codegraph/.gitignore new file mode 100644 index 0000000..9de0f16 --- /dev/null +++ b/.codegraph/.gitignore @@ -0,0 +1,16 @@ +# CodeGraph data files +# These are local to each machine and should not be committed + +# Database +*.db +*.db-wal +*.db-shm + +# Cache +cache/ + +# Logs +*.log + +# Hook markers +.dirty diff --git a/RapidOCRConsole/Assets/1.png b/RapidOCRConsole/Assets/1.png new file mode 100644 index 0000000..39c128b Binary files /dev/null and b/RapidOCRConsole/Assets/1.png differ diff --git a/RapidOCRConsole/Program.cs b/RapidOCRConsole/Program.cs index bcdb4db..5b8cb53 100644 --- a/RapidOCRConsole/Program.cs +++ b/RapidOCRConsole/Program.cs @@ -1,46 +1,110 @@  -using Emgu.CV; using RapidOCRLib; -using System.Diagnostics; -using System.Drawing.Imaging; -using System.Threading.Tasks; -var path = Path.Combine(AppContext.BaseDirectory, "models"); -//Initialize model. -OcrLite ocrEngin = new OcrLite() +var winformModels = Path.Combine(AppContext.BaseDirectory, "..", "..", "..", "..", "RapidOCRWinform", "models"); +winformModels = Path.GetFullPath(winformModels); +var detModel = Path.Combine(winformModels, "PP-OCRv6_det_medium.onnx"); +var clsModel = Path.Combine(winformModels, "ch_ppocr_mobile_v2.0_cls_infer.onnx"); +var recModel = Path.Combine(winformModels, "PP-OCRv6_rec_medium.onnx"); +var dictFile = Path.Combine(winformModels, "ppocrv6_dict.txt"); +var imgFile = Path.Combine(AppContext.BaseDirectory, "Assets", "demo.png"); + +const int padding = 50; +const float boxScoreThresh = 0.5f; +const float boxThresh = 0.3f; +const float unClipRatio = 1.6f; +const bool mostAngle = false; + +TextWriter cout = Console.Out; +void Log(string msg) { cout.WriteLine(msg); cout.Flush(); } + +int optimalThr = (int)(Environment.ProcessorCount * 0.7); +var configs = new (int ThreadNum, int MaxSideLen, bool DoAngle, bool UseGpu, string Label)[] { - DetPath = Path.Combine(path, "ch_PP-OCRv5_mobile_det.onnx"), - ClsPath = Path.Combine(path, "ch_ppocr_mobile_v2.0_cls_infer.onnx"), - RecPath = Path.Combine(path, "ch_PP-OCRv5_rec_mobile_infer.onnx"), - KeyDicPath = Path.Combine(path, "ppocrv5_dict.txt"), + (ThreadNum: optimalThr, MaxSideLen: 1024, DoAngle: true, UseGpu: false, Label: $"A[CPU]: thr={optimalThr} | max=1024 | doAngle=T (Baseline)"), + (ThreadNum: optimalThr, MaxSideLen: 800, DoAngle: false, UseGpu: false, Label: $"D[CPU]: thr={optimalThr} | max=800 | doAngle=F (最优CPU配置)"), + (ThreadNum: optimalThr, MaxSideLen: 800, DoAngle: false, UseGpu: true, Label: $"G[GPU]: max=800 | doAngle=F (与D同参数,GPU加速对比)"), }; +const int warmupRuns = 1; +const int testRuns = 2; + +Log($"Process64={Environment.Is64BitProcess}, ProcessorCount={Environment.ProcessorCount}, OS={Environment.OSVersion}"); +Log("Ready."); -await ocrEngin.InitModels(); -//get the image will be ocr. -var demoWillOCRFile = Path.Combine(AppContext.BaseDirectory, "Assets", "demo.png"); -//ocr detect -var result = ocrEngin.Detect(demoWillOCRFile, 50); -if (result != null) +var results = new List<(string Label, double AvgTotal, double Db, double Ang, double Rec, int Blocks, string Engine)>(); +foreach (var cfg in configs) { - Console.WriteLine(result.ToString()); - var img = result.BoxImg.ToBitmap(); - var desFile = Path.Combine(AppContext.BaseDirectory!, "Assets", Path.GetFileNameWithoutExtension(Path.GetRandomFileName()) + ".png")!; - #pragma warning disable CA1416 - img?.Save(desFile!); - #pragma warning restore CA1416 - if (File.Exists(desFile)) + Log(""); + Log("========================================================================="); + Log($"CONFIG {cfg.Label}"); + Log("========================================================================="); + var ocr = new OcrLite { - ProcessStartInfo psi = new ProcessStartInfo - { - FileName = desFile, - UseShellExecute = true - }; + DetPath = detModel, + ClsPath = clsModel, + RecPath = recModel, + KeyDicPath = dictFile, + ThreadNum = cfg.ThreadNum, + }; + await ocr.InitModels(ocr.DetPath, ocr.ClsPath, ocr.RecPath, ocr.KeyDicPath, cfg.ThreadNum, cfg.UseGpu, gpuDeviceId: 0); + // 初始化后立即取一次引擎状态(Detect 会把 EngineProvider 写入结果) + Log($"InitModels done. UseGpu={cfg.UseGpu}, Begin warmup ({warmupRuns})."); - Process.Start(psi); + // 预热 + for (int w = 0; w < warmupRuns; w++) + { + var r0 = ocr.Detect(imgFile, padding, cfg.MaxSideLen, boxScoreThresh, boxThresh, unClipRatio, cfg.DoAngle, mostAngle); + if (r0 != null) Log($" Warmup DetectTime={r0.DetectTime:F0}ms (Det={r0.DbNetTime:F0}ms Ang={r0.AngleNetTime:F0}ms Rec={r0.CrnnNetTime:F0}ms)"); } - Console.WriteLine("显示strResult"); - Console.WriteLine(result.StrRes); + Log("Warmup done. Begin tests."); + + List totals = new(), dbs = new(), angs = new(), recs = new(); + int blocks = 0; + string engineLine = "unknown"; + for (int i = 0; i < testRuns; i++) + { + var r = ocr.Detect(imgFile, padding, cfg.MaxSideLen, boxScoreThresh, boxThresh, unClipRatio, cfg.DoAngle, mostAngle); + if (r == null) continue; + engineLine = r.EngineProvider ?? "n/a"; + Log($" Run {i + 1}/{testRuns}: total={r.DetectTime:F0}ms Det={r.DbNetTime:F0}ms Ang={r.AngleNetTime:F0}ms Rec={r.CrnnNetTime:F0}ms Blocks={r.TextBlocks.Count} [{engineLine}]"); + totals.Add(r.DetectTime); + dbs.Add(r.DbNetTime); + angs.Add(r.AngleNetTime); + recs.Add(r.CrnnNetTime); + blocks = r.TextBlocks.Count; + } + results.Add((cfg.Label, totals.Average(), dbs.Average(), angs.Average(), recs.Average(), blocks, engineLine)); } +Log(""); +Log("#########################################################################"); +Log(" SUMMARY REPORT (demo.png, PP-OCRv6_medium, CPU vs GPU)"); +Log("#########################################################################"); +Log(string.Format("{0,-58} | {1,8} | {2,8} | {3,8} | {4,8} | {5,7} | {6,8} | {7}", + "Config", "Total(ms)", "Det(ms)", "Ang(ms)", "Rec(ms)", "Blocks", "SpeedUp", "Engine")); +Log("-------------------------------------------------------------------------"); +double baselineTotal = results[0].AvgTotal; +foreach (var r in results) +{ + double speedup = baselineTotal > 0 ? baselineTotal / r.AvgTotal : double.NaN; + Log(string.Format("{0,-58} | {1,8:F0} | {2,8:F0} | {3,8:F0} | {4,8:F0} | {5,7} | x{6:F2} | {7}", + r.Label, r.AvgTotal, r.Db, r.Ang, r.Rec, r.Blocks, speedup, r.Engine)); +} +Log("#########################################################################"); -Console.ReadKey(); +// 如果 GPU 方案仍显示为 CPU,给用户排查清单 +var gpuResult = results.FirstOrDefault(x => x.Label.StartsWith("G[")); +if (!string.IsNullOrEmpty(gpuResult.Engine) && !gpuResult.Engine.Contains("DML(")) +{ + Log(""); + Log("! GPU 方案没有真正启用 DirectML,原因已在 Engine 列打印。按下面步骤排查:"); + Log(" 1) 确认 Windows 版本 ≥ 10.0.1903(Win+R → winver)"); + Log(" 2) 更新显卡驱动到最新版(NVIDIA/AMD/Intel 官网都有)"); + Log(" 3) 本项目已 PlatformTarget=x64,确认编译输出为 x64 而非 32 位"); + Log(" 4) 确认 RapidOCRLib.csproj 引用了 Microsoft.ML.OnnxRuntime.DirectML 1.24.4"); +} +else if (!string.IsNullOrEmpty(gpuResult.Engine) && gpuResult.Engine.Contains("DML(")) +{ + Log(""); + Log($">> DirectML GPU 启用成功!与最优 CPU 方案 D 对比:{baselineTotal / results[1].AvgTotal:F2}x(CPU内部) → {baselineTotal / gpuResult.AvgTotal:F2}x(含GPU)"); +} \ No newline at end of file diff --git a/RapidOCRConsole/RapidOCRConsole.csproj b/RapidOCRConsole/RapidOCRConsole.csproj index 4f8dbad..c7c79ff 100644 --- a/RapidOCRConsole/RapidOCRConsole.csproj +++ b/RapidOCRConsole/RapidOCRConsole.csproj @@ -1,10 +1,13 @@ - + Exe net10.0 enable enable + + x64 + false diff --git a/RapidOCRLib/AngleNet.cs b/RapidOCRLib/AngleNet.cs index 9e2af73..790cfff 100644 --- a/RapidOCRLib/AngleNet.cs +++ b/RapidOCRLib/AngleNet.cs @@ -1,4 +1,4 @@ -using Emgu.CV; +using Emgu.CV; using Emgu.CV.CvEnum; using Emgu.CV.Structure; using Microsoft.ML.OnnxRuntime; @@ -22,28 +22,29 @@ class AngleNet private InferenceSession angleNet; private List inputNames; + public string ProviderInfo { get; private set; } = "NotInitialized"; + public AngleNet() { } ~AngleNet() { - angleNet.Dispose(); + angleNet?.Dispose(); } - public async Task InitModel(string path, int numThread) + public async Task InitModel(string path, int numThread, bool useGpu = false, int gpuDeviceId = 0) { try { - SessionOptions op = new SessionOptions(); - op.GraphOptimizationLevel = GraphOptimizationLevel.ORT_ENABLE_EXTENDED; - op.InterOpNumThreads = numThread; - op.IntraOpNumThreads = numThread; + SessionOptions op = OcrUtils.CreateSessionOptions(OcrUtils.NetKind.Classification, numThread, useGpu, gpuDeviceId, out var providerInfo); + ProviderInfo = providerInfo; + Console.WriteLine($"[AngleNet] Loading model with provider: {providerInfo}"); angleNet = new InferenceSession(path, op); inputNames = angleNet.InputMetadata.Keys.ToList(); // 从 ONNX 模型 metadata 读取输入尺寸,兼容 v2 (192x48) 和 v5 (160x80) var dims = angleNet.InputMetadata.First().Value.Dimensions; - _dstHeight = dims[2]; - _dstWidth = dims[3]; + _dstHeight = dims.Length > 2 && dims[2] > 0 ? dims[2] : 48; + _dstWidth = dims.Length > 3 && dims[3] > 0 ? dims[3] : 192; await Task.CompletedTask; } diff --git a/RapidOCRLib/CrnnNet.cs b/RapidOCRLib/CrnnNet.cs index 7c786d2..9c98b06 100644 --- a/RapidOCRLib/CrnnNet.cs +++ b/RapidOCRLib/CrnnNet.cs @@ -1,4 +1,4 @@ -using Emgu.CV; +using Emgu.CV; using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using RapidOCRLib.Models; @@ -23,6 +23,8 @@ class CrnnNet private List keys; private List inputNames; + public string ProviderInfo { get; private set; } = "NotInitialized"; + public CrnnNet() { } ~CrnnNet() @@ -30,17 +32,16 @@ public CrnnNet() { } crnnNet?.Dispose(); } - public async Task InitModel(string path, string keysPath, int numThread) + public async Task InitModel(string path, string keysPath, int numThread, bool useGpu = false, int gpuDeviceId = 0) { try { - SessionOptions op = new SessionOptions(); - op.GraphOptimizationLevel = GraphOptimizationLevel.ORT_ENABLE_EXTENDED; - op.InterOpNumThreads = numThread; - op.IntraOpNumThreads = numThread; + SessionOptions op = OcrUtils.CreateSessionOptions(OcrUtils.NetKind.Recognition, numThread, useGpu, gpuDeviceId, out var providerInfo); + ProviderInfo = providerInfo; + Console.WriteLine($"[CrnnNet] Loading model with provider: {providerInfo}"); crnnNet = new InferenceSession(path, op); inputNames = crnnNet.InputMetadata.Keys.ToList(); - keys = InitKeys(keysPath); + keys = InitKeys(crnnNet, keysPath); await Task.CompletedTask; } catch (Exception ex) @@ -49,7 +50,36 @@ public async Task InitModel(string path, string keysPath, int numThread) throw; } } - private List InitKeys(string path) + + private List InitKeys(InferenceSession session, string keysPath) + { + // PP-OCRv5/v6 rec models embed the character dictionary in ONNX metadata. + if (session.ModelMetadata.CustomMetadataMap.TryGetValue("character", out string characters)) + { + List keys = new List(); + keys.Add("#"); + string[] lines = characters.Split('\n'); + int count = lines.Length; + if (count > 0 && lines[count - 1].Length == 0) + { + count--; + } + for (int i = 0; i < count; i++) + { + keys.Add(lines[i]); + } + keys.Add(" "); + Console.WriteLine($"keys Size = {keys.Count}"); + return keys; + } + if (string.IsNullOrWhiteSpace(keysPath)) + { + throw new Exception("The rec model does not embed a character dictionary and no key dictory file was provided."); + } + return InitKeysFromFile(keysPath); + } + + private List InitKeysFromFile(string path) { StreamReader sr = new StreamReader(path, Encoding.UTF8); List keys = new List(); @@ -149,4 +179,4 @@ private TextLine ScoreToTextLine(float[] srcData, int h, int w) } } -} \ No newline at end of file +} diff --git a/RapidOCRLib/DbNet.cs b/RapidOCRLib/DbNet.cs index 8c89475..5d71668 100644 --- a/RapidOCRLib/DbNet.cs +++ b/RapidOCRLib/DbNet.cs @@ -1,4 +1,4 @@ -using Clipper2Lib; +using Clipper2Lib; using Emgu.CV; using Emgu.CV.CvEnum; using Emgu.CV.Structure; @@ -23,21 +23,22 @@ class DbNet private List inputNames; + public string ProviderInfo { get; private set; } = "NotInitialized"; + public DbNet() { } ~DbNet() { - dbNet.Dispose(); + dbNet?.Dispose(); } - public async Task InitModel(string path, int numThread) + public async Task InitModel(string path, int numThread, bool useGpu = false, int gpuDeviceId = 0) { try { - SessionOptions op = new SessionOptions(); - op.GraphOptimizationLevel = GraphOptimizationLevel.ORT_ENABLE_EXTENDED; - op.InterOpNumThreads = numThread; - op.IntraOpNumThreads = numThread; + SessionOptions op = OcrUtils.CreateSessionOptions(OcrUtils.NetKind.Detection, numThread, useGpu, gpuDeviceId, out var providerInfo); + ProviderInfo = providerInfo; + Console.WriteLine($"[DbNet] Loading model with provider: {providerInfo}"); dbNet = new InferenceSession(path, op); inputNames = dbNet.InputMetadata.Keys.ToList(); await Task.CompletedTask; diff --git a/RapidOCRLib/Models/ModeOptions.cs b/RapidOCRLib/Models/ModeOptions.cs index e3e85df..6aa480b 100644 --- a/RapidOCRLib/Models/ModeOptions.cs +++ b/RapidOCRLib/Models/ModeOptions.cs @@ -1,6 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; +using System; namespace RapidOCRLib.Models { @@ -26,5 +24,13 @@ public class ModeOptions /// cpu thread number,default is 70% of toal logic cpu core numbers. /// public int ThreadNum { get; set; } = (int)(Environment.ProcessorCount * 0.7); + /// + /// Whether to use GPU acceleration via DirectML (Windows built-in DX12 GPU acceleration). + /// + public bool UseGpu { get; set; } = false; + /// + /// GPU device ID to use when UseGpu is enabled. Default is 0. + /// + public int GpuDeviceId { get; set; } = 0; } } diff --git a/RapidOCRLib/Models/OcrResult.cs b/RapidOCRLib/Models/OcrResult.cs index 0b51c43..c4fe4e2 100644 --- a/RapidOCRLib/Models/OcrResult.cs +++ b/RapidOCRLib/Models/OcrResult.cs @@ -1,4 +1,4 @@ -using Emgu.CV; +using Emgu.CV; using System.Collections.Generic; using System.Drawing; using System.Text; @@ -70,16 +70,26 @@ public sealed class OcrResult { public List TextBlocks { get; set; } public float DbNetTime { get; set; } + public float AngleNetTime { get; set; } + public float CrnnNetTime { get; set; } + public float PreprocessTime { get; set; } + public float PostprocessTime { get; set; } public Mat BoxImg { get; set; } public float DetectTime { get; set; } public string StrRes { get; set; } + /// 当前推理使用的后端引擎信息,如 "DML(device 0)" / "CPU"。 + public string EngineProvider { get; set; } = "Unknown"; public override string ToString() { StringBuilder sb = new StringBuilder(); - sb.AppendLine("OcrResult"); + sb.AppendLine($"OcrResult [Engine: {EngineProvider}]"); TextBlocks.ForEach(x => sb.Append(x)); + sb.AppendLine($"├─PreprocessTime({PreprocessTime}ms)"); sb.AppendLine($"├─DbNetTime({DbNetTime}ms)"); + sb.AppendLine($"├─AngleNetTime({AngleNetTime}ms)"); + sb.AppendLine($"├─CrnnNetTime({CrnnNetTime}ms)"); + sb.AppendLine($"├─PostprocessTime({PostprocessTime}ms)"); sb.AppendLine($"├─DetectTime({DetectTime}ms)"); sb.AppendLine($"└─StrRes({StrRes})"); return sb.ToString(); diff --git a/RapidOCRLib/OcrLite.cs b/RapidOCRLib/OcrLite.cs index 28d430e..81156c9 100644 --- a/RapidOCRLib/OcrLite.cs +++ b/RapidOCRLib/OcrLite.cs @@ -1,4 +1,4 @@ -using Emgu.CV; +using Emgu.CV; using Emgu.CV.CvEnum; using Emgu.CV.Reg; using Emgu.CV.Structure; @@ -19,6 +19,7 @@ public partial class OcrLite private DbNet dbNet; private AngleNet angleNet; private CrnnNet crnnNet; + private bool hasAngleNet; /// /// The path of the Det model file. @@ -63,13 +64,31 @@ public OcrLite(string detPath, string clsPath, string recPath, string keysPath) _CheckModelFilesExist(); } + /// + /// Whether GPU acceleration is enabled for this engine instance. + /// + public bool UseGpu { get; private set; } + + /// + /// The GPU device ID used when UseGpu is enabled. + /// + public int GpuDeviceId { get; private set; } + + /// + /// 当前引擎实例的三个子网执行后端(Det / Angle / Rec)。 + /// 在 InitModels 完成后即可读取;示例: + /// "Det:DML(device 0) / Angle:DML(device 0) / Rec:DML(device 0)" + /// "Det:CPU (DML init failed: xxx) / Angle:CPU / Rec:CPU" + /// + public string EngineStatus { get; private set; } = "未初始化"; + /// /// Initialize OCR Engine /// /// public async Task InitModels() { - await InitModels(this.DetPath, this.ClsPath, this.RecPath, this.KeyDicPath, 0); + await InitModels(this.DetPath, this.ClsPath, this.RecPath, this.KeyDicPath, 0, false, 0); } /// @@ -79,7 +98,7 @@ public async Task InitModels() /// public async Task InitModels(ModeOptions options) { - await InitModels(options.DetPath, options.ClsPath, options.RecPath, options.KeyDicPath, options.ThreadNum); + await InitModels(options.DetPath, options.ClsPath, options.RecPath, options.KeyDicPath, options.ThreadNum, options.UseGpu, options.GpuDeviceId); } /// @@ -90,8 +109,10 @@ public async Task InitModels(ModeOptions options) /// The path of the Rec model file. /// The path of the Key dictionary file. /// The number of CPU threads to use. If set to 0 (the default), the system's logical CPU 70% cores will be used. + /// Whether to use GPU (DirectML) acceleration. Default is false. + /// GPU device ID to use when useGpu is enabled. Default is 0. /// - public async Task InitModels(string detPath, string clsPath, string recPath, string keysPath, int numThread = 0) + public async Task InitModels(string detPath, string clsPath, string recPath, string keysPath, int numThread = 0, bool useGpu = false, int gpuDeviceId = 0) { try { @@ -101,9 +122,22 @@ public async Task InitModels(string detPath, string clsPath, string recPath, str { ThreadNum = numThread; } - await dbNet.InitModel(this.DetPath, ThreadNum); - await angleNet.InitModel(this.ClsPath, ThreadNum); - await crnnNet.InitModel(this.RecPath, keysPath, ThreadNum); + UseGpu = useGpu; + GpuDeviceId = gpuDeviceId; + await dbNet.InitModel(this.DetPath, ThreadNum, useGpu, gpuDeviceId); + if (!string.IsNullOrWhiteSpace(this.ClsPath)) + { + await angleNet.InitModel(this.ClsPath, ThreadNum, useGpu, gpuDeviceId); + hasAngleNet = true; + } + else + { + hasAngleNet = false; + } + await crnnNet.InitModel(this.RecPath, keysPath, ThreadNum, useGpu, gpuDeviceId); + + string angInfo = hasAngleNet ? angleNet.ProviderInfo : "(N/A)"; + EngineStatus = $"Det:{dbNet.ProviderInfo} / Angle:{angInfo} / Rec:{crnnNet.ProviderInfo}"; } catch (Exception ex) { @@ -126,9 +160,15 @@ private void _InitModelFiles(string detPath, string clsPath, string recPath, str private void _CheckModelFilesExist() { _ = File.Exists(this.DetPath) ? true : throw new Exception("The det model file does not exist."); - _ = File.Exists(this.ClsPath) ? true : throw new Exception("The cls model file does not exist."); + if (!string.IsNullOrWhiteSpace(this.ClsPath)) + { + _ = File.Exists(this.ClsPath) ? true : throw new Exception("The cls model file does not exist."); + } _ = File.Exists(this.RecPath) ? true : throw new Exception("The rec model file does not exist."); - _ = File.Exists(this.KeyDicPath) ? true : throw new Exception("The key dictory file does not exist."); + if (!string.IsNullOrWhiteSpace(this.KeyDicPath)) + { + _ = File.Exists(this.KeyDicPath) ? true : throw new Exception("The key dictory file does not exist."); + } } /// @@ -269,21 +309,34 @@ private OcrResult __DetectCore(Mat src, Rectangle originRect, ScaleParam scale, int thickness = OcrUtils.GetThickness(src); Console.WriteLine("=====Start detect====="); var startTicks = DateTime.Now.Ticks; + long tPrev; Console.WriteLine("---------- step: dbNet getTextBoxes ----------"); + tPrev = DateTime.Now.Ticks; var textBoxes = dbNet.GetTextBoxes(src, scale, boxScoreThresh, boxThresh, unClipRatio); - var dbNetTime = (DateTime.Now.Ticks - startTicks) / 10000F; + var dbNetTime = (DateTime.Now.Ticks - tPrev) / 10000F; Console.WriteLine($"TextBoxesSize({textBoxes.Count})"); textBoxes.ForEach(x => Console.WriteLine(x)); - //Console.WriteLine($"dbNetTime({dbNetTime}ms)"); Console.WriteLine("---------- step: drawTextBoxes ----------"); + tPrev = DateTime.Now.Ticks; OcrUtils.DrawTextBoxes(textBoxPaddingImg, textBoxes, thickness); - //CvInvoke.Imshow("ResultPadding", textBoxPaddingImg); + var drawBoxesTime = (DateTime.Now.Ticks - tPrev) / 10000F; //---------- getPartImages ---------- + tPrev = DateTime.Now.Ticks; List partImages = OcrUtils.GetPartImages(src, textBoxes); + // Skip degenerate detections whose crops are empty; the angle and recognition nets cannot process them. + for (int i = partImages.Count - 1; i >= 0; i--) + { + if (partImages[i].IsEmpty || partImages[i].Rows == 0 || partImages[i].Cols == 0) + { + partImages.RemoveAt(i); + textBoxes.RemoveAt(i); + } + } + var cropPartTime = (DateTime.Now.Ticks - tPrev) / 10000F; if (isPartImg) { for (int i = 0; i < partImages.Count; i++) @@ -292,11 +345,15 @@ private OcrResult __DetectCore(Mat src, Rectangle originRect, ScaleParam scale, } } + float preprocessTime = (drawBoxesTime + cropPartTime); + Console.WriteLine("---------- step: angleNet getAngles ----------"); - List angles = angleNet.GetAngles(partImages, doAngle, mostAngle); - //angles.ForEach(x => Console.WriteLine(x)); + tPrev = DateTime.Now.Ticks; + List angles = angleNet.GetAngles(partImages, doAngle && hasAngleNet, mostAngle); + var angleNetTime = (DateTime.Now.Ticks - tPrev) / 10000F; //Rotate partImgs + tPrev = DateTime.Now.Ticks; for (int i = 0; i < partImages.Count; ++i) { if (angles[i].Index == 1) @@ -308,11 +365,14 @@ private OcrResult __DetectCore(Mat src, Rectangle originRect, ScaleParam scale, CvInvoke.Imshow($"DebugImg({i})", partImages[i]); } } + var rotatePartTime = (DateTime.Now.Ticks - tPrev) / 10000F; Console.WriteLine("---------- step: crnnNet getTextLines ----------"); + tPrev = DateTime.Now.Ticks; List textLines = crnnNet.GetTextLines(partImages); - //textLines.ForEach(x => Console.WriteLine(x)); + var crnnNetTime = (DateTime.Now.Ticks - tPrev) / 10000F; + tPrev = DateTime.Now.Ticks; List textBlocks = new List(); for (int i = 0; i < textLines.Count; ++i) { @@ -328,11 +388,6 @@ private OcrResult __DetectCore(Mat src, Rectangle originRect, ScaleParam scale, textBlock.BlockTime = angles[i].Time + textLines[i].Time; textBlocks.Add(textBlock); } - //textBlocks.ForEach(x => Console.WriteLine(x)); - - var endTicks = DateTime.Now.Ticks; - var fullDetectTime = (endTicks - startTicks) / 10000F; - //Console.WriteLine($"fullDetectTime({fullDetectTime}ms)"); //cropped to original size Mat boxImg = new Mat(textBoxPaddingImg, originRect); @@ -340,12 +395,25 @@ private OcrResult __DetectCore(Mat src, Rectangle originRect, ScaleParam scale, StringBuilder strRes = new StringBuilder(); textBlocks.ForEach(x => strRes.AppendLine(x.Text)); + var postprocessTime = (rotatePartTime + (DateTime.Now.Ticks - tPrev)) / 10000F; + + var endTicks = DateTime.Now.Ticks; + var fullDetectTime = (endTicks - startTicks) / 10000F; + + // 用三个子网的实际 provider 拼接显示;若不一致(比如某子网回退CPU)也能一眼看到 + string provider = $"Det:{dbNet.ProviderInfo} / Angle:{angleNet.ProviderInfo} / Rec:{crnnNet.ProviderInfo}"; + OcrResult ocrResult = new OcrResult(); ocrResult.TextBlocks = textBlocks; ocrResult.DbNetTime = dbNetTime; + ocrResult.AngleNetTime = angleNetTime; + ocrResult.CrnnNetTime = crnnNetTime; + ocrResult.PreprocessTime = preprocessTime; + ocrResult.PostprocessTime = postprocessTime; ocrResult.BoxImg = boxImg; ocrResult.DetectTime = fullDetectTime; ocrResult.StrRes = strRes.ToString(); + ocrResult.EngineProvider = provider; return ocrResult; } diff --git a/RapidOCRLib/OcrUtils.cs b/RapidOCRLib/OcrUtils.cs index 0e1ef5c..4121c1b 100644 --- a/RapidOCRLib/OcrUtils.cs +++ b/RapidOCRLib/OcrUtils.cs @@ -1,25 +1,166 @@ -using Emgu.CV; +using Emgu.CV; using Emgu.CV.CvEnum; using Emgu.CV.Structure; +using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using RapidOCRLib.Models; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; +using System.Runtime.InteropServices; namespace RapidOCRLib { class OcrUtils { + /// ONNX 推理子网类型,用于区分执行模式/线程策略。 + public enum NetKind + { + /// 文本检测:输入张量大、算子多,适合 ORT_PARALLEL。 + Detection, + /// 方向分类:输入张量小、调用频繁,适合 ORT_SEQUENTIAL 避免调度开销。 + Classification, + /// 文本识别:输入小但文本块多时顺序推理频繁,用 SEQUENTIAL + 较少线程。 + Recognition, + } + + /// + /// 创建并配置经过性能优化的 SessionOptions。 + /// + public static SessionOptions CreateSessionOptions(NetKind kind, int numThread, bool useGpu, int gpuDeviceId, out string providerInfo) + { + var op = new SessionOptions(); + op.LogSeverityLevel = OrtLoggingLevel.ORT_LOGGING_LEVEL_ERROR; + op.GraphOptimizationLevel = GraphOptimizationLevel.ORT_ENABLE_ALL; + + // CPU 经验值(28核实测基准上校准): + // - Det 大输入图:PARALLEL + 用满 numThread。 + // - Angle 分类器(192x48):SEQUENTIAL + 2 线程。 + // - Rec 识别器:PARALLEL + 12 线程。 + // 注意:DirectML **强制要求** ORT_SEQUENTIAL + EnableMemoryPattern=false, + // 若设 PARALLEL 或 MemoryPattern=true 则 DML EP 静默失败回退 CPU! + int inter, intra; + switch (kind) + { + case NetKind.Classification: + intra = Math.Max(1, Math.Min(numThread, 2)); + inter = 1; + op.ExecutionMode = ExecutionMode.ORT_SEQUENTIAL; + break; + case NetKind.Recognition: + intra = Math.Max(1, Math.Min(numThread, 12)); + inter = Math.Max(1, Math.Min(numThread / 2, 4)); + op.ExecutionMode = ExecutionMode.ORT_PARALLEL; + break; + default: // Detection + intra = Math.Max(1, numThread); + inter = Math.Max(1, Math.Min(numThread / 2, 8)); + op.ExecutionMode = ExecutionMode.ORT_PARALLEL; + break; + } + op.InterOpNumThreads = inter; + op.IntraOpNumThreads = intra; + op.EnableMemoryPattern = true; + + providerInfo = "CPU"; + if (useGpu) + { + if (!Environment.Is64BitProcess) + { + providerInfo = "CPU (DirectML only supports x64; set PlatformTarget=x64 & Prefer32Bit=false)"; + } + else + { + try + { + // DirectML 强制要求:ExecutionMode 必须是 SEQUENTIAL,EnableMemoryPattern 必须为 false。 + // 不满足这两个条件时 DML EP 不会报错但推理会静默回退到 CPU,这就是"时间没降"的根因。 + op.ExecutionMode = ExecutionMode.ORT_SEQUENTIAL; + op.EnableMemoryPattern = false; + // DirectML 基于 DirectX 12,Windows 10 1903+ 内置, + // N卡/A卡/Intel核显全兼容,无需装 CUDA/cuDNN。 + op.AppendExecutionProvider_DML(gpuDeviceId); + providerInfo = $"DML(device {gpuDeviceId})"; + } + catch (Exception gpuEx) + { + providerInfo = $"CPU (DML init failed: {gpuEx.Message})"; + } + } + } + + return op; + } + public static Tensor SubstractMeanNormalize(Mat src, float[] meanVals, float[] normVals) { int cols = src.Cols; int rows = src.Rows; int channels = src.NumberOfChannels; + int plane = rows * cols; + + if (src.Depth == DepthType.Cv8U && channels == 3) + { + long step = src.Step; + IntPtr dataPtr = src.DataPointer; + int rowBytes = cols * 3; + + // 先用Marshal.Copy把像素搬运到托管byte[](避免直接操作非托管内存的不确定性) + byte[] bgr; + if (step == rowBytes) + { + int total = rows * rowBytes; + bgr = new byte[total]; + Marshal.Copy(dataPtr, bgr, 0, total); + } + else + { + bgr = new byte[rows * rowBytes]; + for (int r = 0; r < rows; r++) + { + Marshal.Copy(IntPtr.Add(dataPtr, (int)(r * step)), bgr, r * rowBytes, rowBytes); + } + } + + // 自己分配float[]并用fixed固定,防止GC移动数组导致写野指针(AV的另一常见诱因) + float[] floats = new float[1 * channels * rows * cols]; + unsafe + { + fixed (byte* pIn = bgr) + fixed (float* pOut = floats) + { + float nr = normVals[0], ng = normVals[1], nb = normVals[2]; + float mr = meanVals[0] * nr, mg = meanVals[1] * ng, mb = meanVals[2] * nb; + float* pR = pOut; + float* pG = pOut + plane; + float* pB = pOut + 2 * plane; + + for (int r = 0; r < rows; r++) + { + byte* row = pIn + r * rowBytes; + int rowBase = r * cols; + for (int c = 0; c < cols; c++) + { + int i = c * 3; + byte bv = row[i]; + byte gv = row[i + 1]; + byte rv = row[i + 2]; + int idx = rowBase + c; + pR[idx] = rv * nr - mr; + pG[idx] = gv * ng - mg; + pB[idx] = bv * nb - mb; + } + } + } + } + return new DenseTensor(floats, new[] { 1, channels, rows, cols }, false); + } + + // 非 Cv8U 或非3通道,走原来的 Image 方式兜底 + var inputTensor = new DenseTensor(new[] { 1, channels, rows, cols }); Image srcImg = src.ToImage(); byte[,,] imgData = srcImg.Data; - Tensor inputTensor = new DenseTensor(new[] { 1, channels, rows, cols }); for (int r = 0; r < rows; r++) { for (int c = 0; c < cols; c++) @@ -27,7 +168,7 @@ public static Tensor SubstractMeanNormalize(Mat src, float[] meanVals, fl for (int ch = 0; ch < channels; ch++) { var value = imgData[r, c, ch]; - float data = (float)(value * normVals[ch] - meanVals[ch] * normVals[ch]); + float data = (value * normVals[ch] - meanVals[ch] * normVals[ch]); inputTensor[0, ch, r, c] = data; } } @@ -79,8 +220,6 @@ public static List GetPartImages(Mat src, List textBoxes) for (int i = 0; i < textBoxes.Count; ++i) { Mat partImg = GetRotateCropImage(src, textBoxes[i].Points); - //Mat partImg = new Mat(); - //GetRoiFromBox(src, partImg, textBoxes[i].Points); partImages.Add(partImg); } return partImages; @@ -164,4 +303,3 @@ public static Mat MatRotateClockWise90(Mat src) } } - diff --git a/RapidOCRLib/RapidOCRLib.csproj b/RapidOCRLib/RapidOCRLib.csproj index 010922e..381cb66 100644 --- a/RapidOCRLib/RapidOCRLib.csproj +++ b/RapidOCRLib/RapidOCRLib.csproj @@ -1,8 +1,9 @@ - + - netstandard2.0;net8.0 + netstandard2.0;net8.0;net10.0 AnyCPU + true @@ -11,7 +12,7 @@ RapidAI icon.png RapidAI - RapidOCR is a completely open-source, free OCR tool that supports multi-platform, multi-language operation and rapid offline deployment. + RapidOCR is a completely open-source free OCR tool that supports multi-platform, multi-language operation and rapid offline deployment. Copyright 2026 RapidAI https://github.com/RapidAI/RapidOCRCSharp git @@ -26,10 +27,24 @@ - + + + + + + + + + + + diff --git a/RapidOCRWinform/FormOcr.Designer.cs b/RapidOCRWinform/FormOcr.Designer.cs index 7f5b7fe..f6e1153 100644 --- a/RapidOCRWinform/FormOcr.Designer.cs +++ b/RapidOCRWinform/FormOcr.Designer.cs @@ -1,4 +1,4 @@ -namespace RapidOCRWinform +namespace RapidOCRWinform { partial class FormOcr { @@ -62,6 +62,9 @@ private void InitializeComponent() tableLayoutPanel1 = new TableLayoutPanel(); partImgCheckBox = new CheckBox(); debugCheckBox = new CheckBox(); + useGpuCheckBox = new CheckBox(); + label13 = new Label(); + gpuDeviceIdNumeric = new NumericUpDown(); panel1 = new Panel(); pictureBox = new PictureBox(); detectBtn = new Button(); @@ -74,6 +77,7 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)imgResizeNumeric).BeginInit(); ((System.ComponentModel.ISupportInitialize)paddingNumeric).BeginInit(); ((System.ComponentModel.ISupportInitialize)boxScoreThreshNumeric).BeginInit(); + ((System.ComponentModel.ISupportInitialize)gpuDeviceIdNumeric).BeginInit(); tableLayoutPanel3.SuspendLayout(); tableLayoutPanel1.SuspendLayout(); panel1.SuspendLayout(); @@ -216,7 +220,7 @@ private void InitializeComponent() detNameTextBox.Name = "detNameTextBox"; detNameTextBox.Size = new Size(732, 27); detNameTextBox.TabIndex = 12; - detNameTextBox.Text = "ch_PP-OCRv5_mobile_det.onnx"; + detNameTextBox.Text = "PP-OCRv6_det_medium.onnx"; // // label10 // @@ -254,7 +258,7 @@ private void InitializeComponent() recNameTextBox.Name = "recNameTextBox"; recNameTextBox.Size = new Size(732, 27); recNameTextBox.TabIndex = 16; - recNameTextBox.Text = "ch_PP-OCRv5_rec_mobile_infer.onnx"; + recNameTextBox.Text = "PP-OCRv6_rec_medium.onnx"; // // label12 // @@ -273,7 +277,7 @@ private void InitializeComponent() keysNameTextBox.Name = "keysNameTextBox"; keysNameTextBox.Size = new Size(732, 27); keysNameTextBox.TabIndex = 18; - keysNameTextBox.Text = "ppocrv5_dict.txt"; + keysNameTextBox.Text = "ppocrv6_dict.txt"; // // label5 // @@ -324,8 +328,8 @@ private void InitializeComponent() // doAngleCheckBox // doAngleCheckBox.AutoSize = true; - doAngleCheckBox.Checked = true; - doAngleCheckBox.CheckState = CheckState.Checked; + doAngleCheckBox.Checked = false; + doAngleCheckBox.CheckState = CheckState.Unchecked; doAngleCheckBox.Location = new Point(6, 272); doAngleCheckBox.Margin = new Padding(4, 5, 4, 5); doAngleCheckBox.Name = "doAngleCheckBox"; @@ -423,7 +427,7 @@ private void InitializeComponent() tableLayoutPanel3.Name = "tableLayoutPanel3"; tableLayoutPanel3.RowCount = 1; tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); - tableLayoutPanel3.Size = new Size(1135, 447); + tableLayoutPanel3.Size = new Size(1135, 550); tableLayoutPanel3.TabIndex = 16; // // strRestTextBox @@ -457,10 +461,13 @@ private void InitializeComponent() tableLayoutPanel1.Controls.Add(mostAngleCheckBox, 1, 5); tableLayoutPanel1.Controls.Add(partImgCheckBox, 0, 6); tableLayoutPanel1.Controls.Add(debugCheckBox, 1, 6); + tableLayoutPanel1.Controls.Add(useGpuCheckBox, 0, 7); + tableLayoutPanel1.Controls.Add(label13, 0, 8); + tableLayoutPanel1.Controls.Add(gpuDeviceIdNumeric, 1, 8); tableLayoutPanel1.Location = new Point(4, 5); tableLayoutPanel1.Margin = new Padding(4, 5, 4, 5); tableLayoutPanel1.Name = "tableLayoutPanel1"; - tableLayoutPanel1.RowCount = 8; + tableLayoutPanel1.RowCount = 10; tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 51F)); tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 51F)); tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 51F)); @@ -469,7 +476,9 @@ private void InitializeComponent() tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 51F)); tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 51F)); tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 51F)); - tableLayoutPanel1.Size = new Size(246, 433); + tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 51F)); + tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 51F)); + tableLayoutPanel1.Size = new Size(246, 535); tableLayoutPanel1.TabIndex = 2; // // partImgCheckBox @@ -496,6 +505,38 @@ private void InitializeComponent() debugCheckBox.UseVisualStyleBackColor = true; debugCheckBox.CheckedChanged += debugCheckBox_CheckedChanged; // + // useGpuCheckBox + // + useGpuCheckBox.AutoSize = true; + useGpuCheckBox.Location = new Point(6, 377); + useGpuCheckBox.Margin = new Padding(4, 5, 4, 5); + useGpuCheckBox.Name = "useGpuCheckBox"; + useGpuCheckBox.Size = new Size(86, 24); + useGpuCheckBox.TabIndex = 30; + useGpuCheckBox.Text = "UseGpu"; + useGpuCheckBox.UseVisualStyleBackColor = true; + // + // label13 + // + label13.AutoSize = true; + label13.Location = new Point(6, 429); + label13.Margin = new Padding(4, 0, 4, 0); + label13.Name = "label13"; + label13.Size = new Size(100, 20); + label13.TabIndex = 31; + label13.Text = "GpuDeviceId"; + // + // gpuDeviceIdNumeric + // + gpuDeviceIdNumeric.Location = new Point(128, 434); + gpuDeviceIdNumeric.Margin = new Padding(4, 5, 4, 5); + gpuDeviceIdNumeric.Maximum = new decimal(new int[] { 8, 0, 0, 0 }); + gpuDeviceIdNumeric.Minimum = new decimal(new int[] { 0, 0, 0, 0 }); + gpuDeviceIdNumeric.Name = "gpuDeviceIdNumeric"; + gpuDeviceIdNumeric.Size = new Size(111, 27); + gpuDeviceIdNumeric.TabIndex = 32; + gpuDeviceIdNumeric.Value = new decimal(new int[] { 0, 0, 0, 0 }); + // // panel1 // panel1.AutoScroll = true; @@ -545,7 +586,7 @@ private void InitializeComponent() // ocrResultTextBox.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; ocrResultTextBox.Font = new Font("宋体", 9F); - ocrResultTextBox.Location = new Point(21, 839); + ocrResultTextBox.Location = new Point(21, 942); ocrResultTextBox.Margin = new Padding(4, 5, 4, 5); ocrResultTextBox.Multiline = true; ocrResultTextBox.Name = "ocrResultTextBox"; @@ -557,7 +598,7 @@ private void InitializeComponent() // AutoScaleDimensions = new SizeF(9F, 20F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(1176, 1268); + ClientSize = new Size(1176, 1370); Controls.Add(tableLayoutPanel2); Controls.Add(tableLayoutPanel3); Controls.Add(detectBtn); @@ -575,6 +616,7 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)imgResizeNumeric).EndInit(); ((System.ComponentModel.ISupportInitialize)paddingNumeric).EndInit(); ((System.ComponentModel.ISupportInitialize)boxScoreThreshNumeric).EndInit(); + ((System.ComponentModel.ISupportInitialize)gpuDeviceIdNumeric).EndInit(); tableLayoutPanel3.ResumeLayout(false); tableLayoutPanel3.PerformLayout(); tableLayoutPanel1.ResumeLayout(false); @@ -622,6 +664,9 @@ private void InitializeComponent() private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; private System.Windows.Forms.CheckBox partImgCheckBox; private System.Windows.Forms.CheckBox debugCheckBox; + private System.Windows.Forms.CheckBox useGpuCheckBox; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.NumericUpDown gpuDeviceIdNumeric; private System.Windows.Forms.Button detectBtn; private System.Windows.Forms.Button initBtn; private System.Windows.Forms.TextBox ocrResultTextBox; diff --git a/RapidOCRWinform/FormOcr.cs b/RapidOCRWinform/FormOcr.cs index 1bbfc18..3190258 100644 --- a/RapidOCRWinform/FormOcr.cs +++ b/RapidOCRWinform/FormOcr.cs @@ -1,4 +1,4 @@ -using Emgu.CV; +using Emgu.CV; using Emgu.CV.CvEnum; using RapidOCRLib; using RapidOCRLib.Models; @@ -12,21 +12,234 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Forms; -using System.IO; namespace RapidOCRWinform { public partial class FormOcr : Form { private OcrLite? ocrEngin; + private Label engineStatusLabel = null!; + private ToolTip engineToolTip = null!; public FormOcr() { InitializeComponent(); + + // --------------------- 布局修复(问题 1:按钮丢失 / 界面展示不全) --------------------- + // 设计时最小宽高对 1366×768 的笔记本屏幕过大(扣任务栏可用只有 700 左右), + // 调小到 1160×700,超出部分靠 AutoScroll 滚屏。 + this.AutoScroll = true; + this.AutoScrollMinSize = new Size(1160, 980); + this.MinimumSize = new Size(1160, 700); + + // Designer 里 initBtn 默认是 Anchor=Top|Left,但 detectBtn 是 Anchor=Top|Right, + // 导致 Form 宽度变化时两个大按钮水平错位,一个贴右一个贴左,initBtn 被挤出右边界。 + // 统一 Anchor=Top|Right;并且强制把两个按钮挂到 Form 直接子级 + BringToFront, + // 防止被 tableLayoutPanel2 这类大面板盖在下面(Z-order 覆盖)。 + // 具体坐标不在这里硬设 —— 构造函数 InitializeComponent 之后 Winform 还会执行 AutoScale, + // 125%/150% 高 DPI 会把 Location/Size 二次缩放,手动设的值立刻被覆盖。 + // 真正的对齐工作统一放到 Form1_Load 里(此时句柄已创建,AutoScale 已完成,Bounds 是最终值)。 + initBtn.Anchor = AnchorStyles.Top | AnchorStyles.Right; + detectBtn.Anchor = AnchorStyles.Top | AnchorStyles.Right; + detectBtn.Parent = this; + initBtn.Parent = this; + detectBtn.BringToFront(); + initBtn.BringToFront(); + detectBtn.Visible = true; + initBtn.Visible = true; + + // --------------------- 底部引擎状态条 --------------------- + engineStatusLabel = new Label + { + Dock = DockStyle.Bottom, + Height = 42, + AutoSize = false, + TextAlign = ContentAlignment.MiddleLeft, + Padding = new Padding(12, 0, 12, 0), + Font = new Font("Segoe UI", 9F, FontStyle.Regular), + BorderStyle = BorderStyle.FixedSingle, + Text = "引擎:未初始化(点击右上角【重新初始化】加载模型,勾选 UseGpu 后也必须点这里才生效)" + }; + engineToolTip = new ToolTip + { + AutoPopDelay = 15000, + InitialDelay = 250, + ReshowDelay = 250, + ShowAlways = true, + ToolTipTitle = "引擎状态详情" + }; + this.Controls.Add(engineStatusLabel); + // BringToFront 等价于 Controls.SetChildIndex(engineStatusLabel, 0):最高 Dock 优先级, + // 先抢 Form 底部 42px 外沿,其他 Anchor=Bottom 的控件会自动贴到它上沿。 + engineStatusLabel.BringToFront(); + + // --------------------- 事件订阅:配置变更提示重新初始化 --------------------- + // 用户常误以为"勾 UseGpu 就立刻生效",实际上模型已加载必须重新 InitModels, + // 任何配置改动后立即给一个醒目黄色提示。 + EventHandler configDirty = (s, e) => + { + engineStatusLabel.Text = "⚙️ UseGpu/GpuDeviceId 已变更:请点击右上角【重新初始化】才能生效(原引擎实例仍用旧配置运行)"; + engineStatusLabel.BackColor = Color.FromArgb(255, 255, 190); // 亮黄 + engineStatusLabel.ForeColor = Color.FromArgb(120, 75, 0); + engineToolTip.SetToolTip(engineStatusLabel, + "UseGpu / GpuDeviceId / NumThread / 模型路径 等参数变更后,都需要点击【重新初始化】\r\n" + + "重新加载三个 ONNX 子网(Det/Angle/Rec)才能生效。\r\n" + + "仅改 CheckBox 不会热切换,OcrLite 类本身不提供无重启切换 Provider 的能力。"); + }; + useGpuCheckBox.CheckedChanged += configDirty; + gpuDeviceIdNumeric.ValueChanged += configDirty; + numThreadNumeric.ValueChanged += configDirty; + detNameTextBox.TextChanged += configDirty; + clsNameTextBox.TextChanged += configDirty; + recNameTextBox.TextChanged += configDirty; + keysNameTextBox.TextChanged += configDirty; + modelsTextBox.TextChanged += configDirty; + } + + /// 把 DirectML 初始化失败的原因翻译成用户能看懂的行动指引。 + /// DirectML 内置于 Windows 10 1709+,极少失败;失败仅可能是 Windows 太旧或显卡驱动不支持 DX12。 + private static string SummarizeGpuFailure(string raw) + { + if (raw.Contains("x64", StringComparison.OrdinalIgnoreCase) || raw.Contains("Prefer32Bit", StringComparison.OrdinalIgnoreCase)) + { + return "CPU(DML 失败:需要 x64 进程 → 项目属性→生成→PlatformTarget=x64,取消 Prefer32Bit)"; + } + if (raw.Contains("DirectX", StringComparison.OrdinalIgnoreCase) || + raw.Contains("dxgi", StringComparison.OrdinalIgnoreCase) || + raw.Contains("D3D", StringComparison.OrdinalIgnoreCase)) + { + return "CPU(DML 失败:显卡驱动不支持 DirectX 12 → 请更新显卡驱动到最新版)"; + } + if (raw.Contains("provider is not enabled", StringComparison.Ordinal) || + raw.Contains("not supported", StringComparison.OrdinalIgnoreCase)) + { + return "CPU(DML 失败:当前 onnxruntime.dll 不含 DML EP → 请确认 RapidOCRLib.csproj 引用的是 Microsoft.ML.OnnxRuntime.DirectML 而非纯 CPU 版)"; + } + // DirectML 极少失败,兜底显示前 90 字符 + string cleaned = raw.Replace("\r", " ").Replace("\n", " "); + return cleaned.Length <= 90 ? cleaned : cleaned.Substring(0, 90) + "…(鼠标悬停看完整报错)"; + } + + /// 刷新底部引擎状态显示。颜色:DML GPU 成功→绿,失败回退→橙,纯 CPU→灰,配置脏→黄。 + private void UpdateEngineStatus(string? statusFromResult = null) + { + string raw; + if (!string.IsNullOrEmpty(statusFromResult)) + raw = statusFromResult!; + else if (ocrEngin != null) + raw = ocrEngin.EngineStatus; + else + raw = "未初始化"; + + bool allDmlSuccess = raw.Contains("DML(device ", StringComparison.Ordinal); + bool anyGpuFailed = raw.Contains("DML init failed", StringComparison.Ordinal) || + raw.Contains("GPU requires", StringComparison.Ordinal); + + string display; + if (allDmlSuccess) + { + display = $"✅ DirectML GPU 加速已启用:{raw}"; + engineStatusLabel.BackColor = Color.FromArgb(214, 240, 210); // 浅绿 + engineStatusLabel.ForeColor = Color.FromArgb(35, 100, 35); + engineToolTip.SetToolTip(engineStatusLabel, + "三个子网(Det / Angle / Rec)都已成功挂到 DirectML Execution Provider。\r\n" + + "DirectML 基于 DirectX 12,Windows 10+ 内置,无需安装 CUDA/cuDNN。\r\n" + + "NVIDIA / AMD / Intel 核显全部兼容。demo.png 预计 800~1500ms / 张。\r\n" + + "如果速度仍慢,打开任务管理器 → 性能 → GPU,看 3D / Compute 列是否有明显占用。"); + } + else if (anyGpuFailed) + { + string summary = SummarizeGpuFailure(raw); + display = $"⚠️ {summary}"; + engineStatusLabel.BackColor = Color.FromArgb(255, 235, 180); // 浅橙 + engineStatusLabel.ForeColor = Color.FromArgb(140, 80, 0); + engineToolTip.SetToolTip(engineStatusLabel, + "完整报错(ONNX Runtime 返回):\r\n" + raw + "\r\n\r\n" + + "【说明】本项目使用 DirectML(Microsoft.ML.OnnxRuntime.DirectML),\r\n" + + "无需 CUDA/cuDNN,Windows 10 1709+ 直接可用。\r\n\r\n" + + "排查步骤:\r\n" + + " 1) 确认 Windows 版本 ≥ 10.0.16299(Win+R → winver)\r\n" + + " 2) 更新显卡驱动到最新版(NVIDIA / AMD / Intel 官网上都有)\r\n" + + " 3) 清理解决方案重建:VS 菜单【生成→清理解决方案】+【生成解决方案】"); + } + else if (raw == "未初始化") + { + display = "引擎:未初始化 → 请点击右上角【重新初始化】加载模型(勾选 UseGpu 后也必须点一次)"; + engineStatusLabel.BackColor = Color.FromArgb(240, 240, 240); // 灰 + engineStatusLabel.ForeColor = Color.FromArgb(60, 60, 60); + engineToolTip.SetToolTip(engineStatusLabel, + "首次启动需要点击【重新初始化】加载三个 ONNX 模型(约 200MB 左右)。\r\n" + + "如果希望使用 GPU 加速,请先勾选【UseGpu】再点击【重新初始化】。\r\n" + + "GpuDeviceId 默认 0(通常只有一块显卡用 0 即可)。\r\n\r\n" + + "本项目使用 DirectML(DirectX 12)GPU 加速,N/A/I 卡全兼容,无需装 CUDA!"); + } + else + { + // 纯 CPU(未勾选 UseGpu) + display = $"⚙️ CPU 运行中({raw})——想加速请勾【UseGpu】并点【重新初始化】(DirectML,无需 CUDA!)"; + engineStatusLabel.BackColor = Color.FromArgb(240, 240, 240); + engineStatusLabel.ForeColor = Color.FromArgb(60, 60, 60); + engineToolTip.SetToolTip(engineStatusLabel, + "当前 Det/Angle/Rec 三个子网都运行在 CPU 上,最优配置下 demo.png 约 3.6s/张。\r\n" + + "想降到 1s 以内:勾选 UseGpu → 点重新初始化 → 底部状态转绿即可。\r\n" + + "(本项目使用 DirectML GPU 加速,Windows 10+ 内置支持,无需装 CUDA Toolkit)"); + } + + engineStatusLabel.Text = display; } private async void Form1_Load(object sender, EventArgs e) { + // ====================================== + // 【按钮丢失终极修复】AutoScale 完成后,按 detectBtn 的实时 Bounds 动态对齐 initBtn + // 构造函数里设置的 Location 会被高 DPI AutoScale 二次缩放甚至覆盖, + // Form_Load 时控件句柄已创建,Bounds 是最终显示坐标,此时改写才真正生效。 + // ====================================== + int btnGap = 10; + Rectangle detRect = detectBtn.Bounds; + Rectangle initRect = initBtn.Bounds; + + // 1) X 坐标:两个按钮宽度相同,左边缘严格对齐(Anchor=Top|Right 已经保证它们的 Right 贴 Form 右边) + if (initRect.X != detRect.X) + { + initRect.X = detRect.X; + } + // 2) Y 坐标:initBtn 紧贴 detectBtn 下沿 + 10px 间距(避免上次叠进 detectBtn 下半部分导致视觉消失) + int desiredTop = detRect.Bottom + btnGap; + // 但如果用户屏幕太小(扣掉状态条 42 后装不下 initBtn 高度),就尽量贴 detectBtn 下沿且不超出 Client 上半屏 + int maxAllowBottom = this.ClientSize.Height - 60; // 留 60 给底部状态条+边缘 + int desiredBottom = desiredTop + initRect.Height; + if (desiredBottom > maxAllowBottom) + { + // 极端情况:窗口太小,让 initBtn 向 detectBtn 靠紧,至少保证 60% 的按钮高度可见(AutoScroll 可以滚) + desiredTop = Math.Max(detRect.Bottom, maxAllowBottom - (int)(initRect.Height * 0.6)); + } + initRect.Y = desiredTop; + initBtn.Bounds = initRect; + + // 3) 保证 AutoScrollMinSize 的高度至少包含 initBtn 的下沿(否则会被裁剪不出滚动条,真的"丢"了) + int requiredScrollH = initRect.Bottom + 20; + if (this.AutoScrollMinSize.Height < requiredScrollH) + { + this.AutoScrollMinSize = new Size(this.AutoScrollMinSize.Width, requiredScrollH); + } + + // 4) 二次保证 Z-order:两个按钮最顶层,状态条 Dock 优先级最高(贴在 Form 最底部不被遮挡) + detectBtn.BringToFront(); + initBtn.BringToFront(); + engineStatusLabel.BringToFront(); + + // 5) 兜底:如果 initBtn 还是不可见(理论上不会有了),直接强制 Visible=true + 弹一次状态条提醒 + if (!initBtn.Visible || !this.ClientRectangle.IntersectsWith(initBtn.ClientRectangle)) + { + initBtn.Visible = true; + engineStatusLabel.Text = "⚠️ 检测到【重新初始化】按钮超出可视区域,已自动复位;如仍看不见请垂直滚动右侧滚动条"; + engineStatusLabel.BackColor = Color.FromArgb(255, 200, 100); + engineStatusLabel.ForeColor = Color.FromArgb(120, 60, 0); + } + // 刷新初始引擎状态(Load 末尾再真正调用 InitModels) + UpdateEngineStatus(); + string appPath = AppDomain.CurrentDomain.BaseDirectory; string appDir = Directory.GetParent(appPath)!.FullName; string modelsDir = appPath + "models"; @@ -40,7 +253,7 @@ private async void Form1_Load(object sender, EventArgs e) { MessageBox.Show("模型文件不存在:" + detPath); } - bool isClsExists = File.Exists(clsPath); + bool isClsExists = string.IsNullOrWhiteSpace(clsNameTextBox.Text) || File.Exists(clsPath); if (!isClsExists) { MessageBox.Show("模型文件不存在:" + clsPath); @@ -50,7 +263,7 @@ private async void Form1_Load(object sender, EventArgs e) { MessageBox.Show("模型文件不存在:" + recPath); } - bool isKeysExists = File.Exists(recPath); + bool isKeysExists = string.IsNullOrWhiteSpace(keysNameTextBox.Text) || File.Exists(keysPath); if (!isKeysExists) { MessageBox.Show("Keys文件不存在:" + keysPath); @@ -58,15 +271,25 @@ private async void Form1_Load(object sender, EventArgs e) if (isDetExists && isClsExists && isRecExists && isKeysExists) { ocrEngin = new OcrLite(); - await ocrEngin.InitModels(detPath, clsPath, recPath, keysPath, (int)numThreadNumeric.Value); + try + { + await ocrEngin.InitModels(detPath, clsPath, recPath, keysPath, (int)numThreadNumeric.Value, useGpuCheckBox.Checked, (int)gpuDeviceIdNumeric.Value); + } + catch (Exception ex) + { + MessageBox.Show("初始化失败:" + ex.Message + Environment.NewLine + + "(若勾选了 UseGpu 且报错:1) 确认 PlatformTarget=x64 2) 确认显卡驱动支持 DirectX 12(更新到最新) 3) 本项目已改用 DirectML,无需装 CUDA Toolkit)"); + } + UpdateEngineStatus(); } else { MessageBox.Show("初始化失败,请确认模型文件夹和文件后,重新初始化!"); + UpdateEngineStatus(); } } - private void initBtn_Click(object sender, EventArgs e) + private async void initBtn_Click(object sender, EventArgs e) { string modelsDir = modelsTextBox.Text; string detPath = modelsDir + "\\" + detNameTextBox.Text; @@ -78,7 +301,7 @@ private void initBtn_Click(object sender, EventArgs e) { MessageBox.Show("模型文件不存在:" + detPath); } - bool isClsExists = File.Exists(clsPath); + bool isClsExists = string.IsNullOrWhiteSpace(clsNameTextBox.Text) || File.Exists(clsPath); if (!isClsExists) { MessageBox.Show("模型文件不存在:" + clsPath); @@ -88,7 +311,7 @@ private void initBtn_Click(object sender, EventArgs e) { MessageBox.Show("模型文件不存在:" + recPath); } - bool isKeysExists = File.Exists(recPath); + bool isKeysExists = string.IsNullOrWhiteSpace(keysNameTextBox.Text) || File.Exists(keysPath); if (!isKeysExists) { MessageBox.Show("Keys文件不存在:" + keysPath); @@ -96,11 +319,21 @@ private void initBtn_Click(object sender, EventArgs e) if (isDetExists && isClsExists && isRecExists && isKeysExists) { ocrEngin = new OcrLite(); - ocrEngin.InitModels(detPath, clsPath, recPath, keysPath, (int)numThreadNumeric.Value); + try + { + await ocrEngin.InitModels(detPath, clsPath, recPath, keysPath, (int)numThreadNumeric.Value, useGpuCheckBox.Checked, (int)gpuDeviceIdNumeric.Value); + } + catch (Exception ex) + { + MessageBox.Show("初始化失败:" + ex.Message + Environment.NewLine + + "(若勾选了 UseGpu 且报错:1) 确认 PlatformTarget=x64 2) 确认显卡驱动支持 DirectX 12(更新到最新) 3) 本项目已改用 DirectML,无需装 CUDA Toolkit)"); + } + UpdateEngineStatus(); } else { MessageBox.Show("初始化失败,请确认模型文件夹和文件后,重新初始化!"); + UpdateEngineStatus(); } } @@ -156,9 +389,10 @@ private void detectBtn_Click(object sender, EventArgs e) bool doAngle = doAngleCheckBox.Checked; bool mostAngle = mostAngleCheckBox.Checked; OcrResult ocrResult = ocrEngin.Detect(pathTextBox.Text, padding, imgResize, boxScoreThresh, boxThresh, unClipRatio, doAngle, mostAngle); + UpdateEngineStatus(ocrResult.EngineProvider); ocrResultTextBox.Text = ocrResult.ToString(); strRestTextBox.Text = ocrResult.StrRes; - pictureBox.Image = ocrResult.BoxImg.ToBitmap(); + if (ocrResult.BoxImg != null) pictureBox.Image = ocrResult.BoxImg.ToBitmap(); } private void partImgCheckBox_CheckedChanged(object sender, EventArgs e) diff --git a/RapidOCRWinform/RapidOCRWinform.csproj b/RapidOCRWinform/RapidOCRWinform.csproj index 2bc9664..48d7fe8 100644 --- a/RapidOCRWinform/RapidOCRWinform.csproj +++ b/RapidOCRWinform/RapidOCRWinform.csproj @@ -1,4 +1,4 @@ - + WinExe @@ -6,10 +6,19 @@ enable true enable + + x64 + false - \ No newline at end of file + + + PreserveNewest + + + + diff --git a/RapidOCRWinform/models/PP-OCRv6_det_medium.onnx b/RapidOCRWinform/models/PP-OCRv6_det_medium.onnx new file mode 100644 index 0000000..f8633ab Binary files /dev/null and b/RapidOCRWinform/models/PP-OCRv6_det_medium.onnx differ diff --git a/RapidOCRWinform/models/PP-OCRv6_rec_medium.onnx b/RapidOCRWinform/models/PP-OCRv6_rec_medium.onnx new file mode 100644 index 0000000..3093b25 Binary files /dev/null and b/RapidOCRWinform/models/PP-OCRv6_rec_medium.onnx differ diff --git a/RapidOCRWinform/models/ch_ppocr_mobile_v2.0_cls_infer.onnx b/RapidOCRWinform/models/ch_ppocr_mobile_v2.0_cls_infer.onnx new file mode 100644 index 0000000..6b9d102 Binary files /dev/null and b/RapidOCRWinform/models/ch_ppocr_mobile_v2.0_cls_infer.onnx differ diff --git a/RapidOCRWinform/models/ppocrv6_dict.txt b/RapidOCRWinform/models/ppocrv6_dict.txt new file mode 100644 index 0000000..270082a --- /dev/null +++ b/RapidOCRWinform/models/ppocrv6_dict.txt @@ -0,0 +1,18708 @@ +! +" +# +$ +% +& +' +( +) +* ++ +, +- +. +/ +: +; +< += +> +? +@ +[ +\ +] +^ +_ +` +{ +| +} +~ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +X +Y +Z +a +b +c +d +e +f +g +h +i +j +k +l +m +n +o +p +q +r +s +t +u +v +w +x +y +z +¢ +£ +¤ +¥ +¦ +§ +¨ +© +ª +« +¬ +® +¯ +° +± +² +³ +´ +µ +¶ +· +¸ +¹ +º +» +¼ +½ +¾ +¿ +À +Á + +à +Ä +Å +Æ +Ç +È +É +Ê +Ë +Ì +Í +Î +Ï +Ð +Ñ +Ò +Ó +Ô +Õ +Ö +× +Ø +Ù +Ú +Û +Ü +Ý +Þ +ß +à +á +â +ã +ä +å +æ +ç +è +é +ê +ë +ì +í +î +ï +ð +ñ +ò +ó +ô +õ +ö +÷ +ø +ù +ú +û +ü +ý +þ +ÿ +Ā +ā +Ă +ă +Ą +ą +Ć +ć +Ĉ +ĉ +Ċ +ċ +Č +č +Ď +ď +Đ +đ +Ē +ē +Ĕ +ĕ +Ė +ė +Ę +ę +Ě +ě +Ĝ +ĝ +Ğ +ğ +Ġ +ġ +Ģ +ģ +Ĥ +ĥ +Ħ +ħ +Ĩ +ĩ +Ī +ī +Ĭ +ĭ +Į +į +İ +ı +IJ +ij +Ĵ +ĵ +Ķ +ķ +ĸ +Ĺ +ĺ +Ļ +ļ +Ľ +ľ +Ŀ +ŀ +Ł +ł +Ń +ń +Ņ +ņ +Ň +ň +ʼn +Ŋ +ŋ +Ō +ō +Ŏ +ŏ +Ő +ő +Œ +œ +Ŕ +ŕ +Ŗ +ŗ +Ř +ř +Ś +ś +Ŝ +ŝ +Ş +ş +Š +š +Ţ +ţ +Ť +ť +Ŧ +ŧ +Ũ +ũ +Ū +ū +Ŭ +ŭ +Ů +ů +Ű +ű +Ų +ų +Ŵ +ŵ +Ŷ +ŷ +Ÿ +Ź +ź +Ż +ż +Ž +ž +ſ +ƀ +Ɓ +Ƃ +ƃ +Ƅ +ƅ +Ɔ +Ƈ +ƈ +Ɖ +Ɗ +Ƌ +ƌ +ƍ +Ǝ +Ə +Ɛ +Ƒ +ƒ +Ɠ +Ɣ +ƕ +Ɩ +Ɨ +Ƙ +ƙ +ƚ +ƛ +Ɯ +Ɲ +ƞ +Ɵ +Ơ +ơ +Ƣ +ƣ +Ƥ +ƥ +Ʀ +Ƨ +ƨ +Ʃ +ƪ +ƫ +Ƭ +ƭ +Ʈ +Ư +ư +Ʊ +Ʋ +Ƴ +ƴ +Ƶ +ƶ +Ʒ +Ƹ +ƹ +ƺ +ƻ +Ƽ +ƽ +ƾ +ƿ +ǀ +ǁ +ǂ +ǃ +DŽ +Dž +dž +LJ +Lj +lj +NJ +Nj +nj +Ǎ +ǎ +Ǐ +ǐ +Ǒ +ǒ +Ǔ +ǔ +Ǖ +ǖ +Ǘ +ǘ +Ǚ +ǚ +Ǜ +ǜ +ǝ +Ǟ +ǟ +Ǡ +ǡ +Ǣ +ǣ +Ǥ +ǥ +Ǧ +ǧ +Ǩ +ǩ +Ǫ +ǫ +Ǭ +ǭ +Ǯ +ǯ +ǰ +DZ +Dz +dz +Ǵ +ǵ +Ƕ +Ƿ +Ǹ +ǹ +Ǻ +ǻ +Ǽ +ǽ +Ǿ +ǿ +Ȁ +ȁ +Ȃ +ȃ +Ȅ +ȅ +Ȇ +ȇ +Ȉ +ȉ +Ȋ +ȋ +Ȍ +ȍ +Ȏ +ȏ +Ȑ +ȑ +Ȓ +ȓ +Ȕ +ȕ +Ȗ +ȗ +Ș +ș +Ț +ț +Ȝ +ȝ +Ȟ +ȟ +Ƞ +ȡ +Ȣ +ȣ +Ȥ +ȥ +Ȧ +ȧ +Ȩ +ȩ +Ȫ +ȫ +Ȭ +ȭ +Ȯ +ȯ +Ȱ +ȱ +Ȳ +ȳ +ȴ +ȵ +ȶ +ȷ +ȸ +ȹ +Ⱥ +Ȼ +ȼ +Ƚ +Ⱦ +ȿ +ɀ +Ɂ +ɂ +Ƀ +Ʉ +Ʌ +Ɇ +ɇ +Ɉ +ɉ +Ɋ +ɋ +Ɍ +ɍ +Ɏ +ɏ +ɐ +ɑ +ɒ +ɓ +ɔ +ɕ +ɖ +ɗ +ɘ +ə +ɚ +ɛ +ɜ +ɝ +ɞ +ɟ +ɠ +ɡ +ɢ +ɣ +ɤ +ɥ +ɦ +ɧ +ɨ +ɩ +ɪ +ɫ +ɬ +ɭ +ɮ +ɯ +ɰ +ɱ +ɲ +ɳ +ɴ +ɵ +ɶ +ɷ +ɸ +ɹ +ɺ +ɻ +ɼ +ɽ +ɾ +ɿ +ʀ +ʁ +ʂ +ʃ +ʄ +ʅ +ʆ +ʇ +ʈ +ʉ +ʊ +ʋ +ʌ +ʍ +ʎ +ʏ +ʐ +ʑ +ʒ +ʓ +ʔ +ʕ +ʖ +ʗ +ʘ +ʙ +ʚ +ʛ +ʜ +ʝ +ʞ +ʟ +ʠ +ʡ +ʢ +ʣ +ʤ +ʥ +ʦ +ʧ +ʨ +ʩ +ʪ +ʫ +ʬ +ʭ +ʮ +ʯ +Α +Β +Γ +Δ +Ε +Ζ +Η +Θ +Ι +Κ +Λ +Μ +Ν +Ξ +Ο +Π +Ρ +Σ +Τ +Υ +Φ +Χ +Ψ +Ω +α +β +γ +δ +ε +ζ +η +θ +ι +κ +λ +μ +ν +ξ +ο +π +ρ +σ +τ +υ +φ +χ +ψ +ω +ϐ +ϑ +ϒ +ϕ +ϖ +ϝ +Ϟ +ϟ +Ϡ +ϡ +Ϣ +ϣ +Ϥ +ϥ +Ϧ +ϧ +Ϩ +ϩ +Ϫ +ϫ +Ϭ +ϭ +Ϯ +ϯ +ϰ +ϱ +ϴ +ϵ +Ạ +ồ +– +— +― +‖ +‘ +’ +“ +” +† +‡ +• +‥ +… +‰ +′ +″ +※ +⁎ +⁰ +⁴ +⁵ +⁶ +⁷ +⁸ +⁹ +⁺ +⁻ +⁼ +⁽ +⁾ +ⁿ +₀ +₁ +₂ +₃ +₄ +₅ +₆ +₇ +₈ +₉ +₊ +₋ +₌ +₍ +₎ +ₒ +₠ +₡ +₢ +₣ +₤ +₥ +₦ +₧ +₨ +₩ +₪ +₫ +€ +₭ +₮ +₯ +₰ +₱ +₲ +₳ +₴ +₵ +₶ +₷ +₸ +₹ +₺ +₻ +₼ +₽ +₾ +₿ +℃ +℉ +ℎ +ℏ +ℑ +℘ +ℜ +™ +℧ +Å +ℵ +ℶ +ℷ +ℸ +ℹ +⅀ +Ⅰ +Ⅱ +Ⅲ +Ⅳ +Ⅴ +Ⅵ +Ⅶ +Ⅷ +Ⅸ +Ⅹ +Ⅺ +Ⅻ +ⅰ +ⅱ +ⅲ +ⅳ +ⅴ +ⅵ +ⅶ +ⅷ +ⅸ +ⅹ +ⅺ +ⅻ +ⅼ +ↀ +ↁ +ↂ +← +↑ +→ +↓ +↔ +↕ +↖ +↗ +↘ +↙ +↚ +↛ +↜ +↝ +↞ +↟ +↠ +↡ +↢ +↣ +↤ +↥ +↦ +↧ +↨ +↩ +↪ +↫ +↬ +↭ +↮ +↯ +↰ +↱ +↲ +↳ +↴ +↵ +↶ +↷ +↸ +↹ +↺ +↻ +↼ +↽ +↾ +↿ +⇀ +⇁ +⇂ +⇃ +⇄ +⇅ +⇆ +⇇ +⇈ +⇉ +⇊ +⇋ +⇌ +⇍ +⇎ +⇏ +⇐ +⇑ +⇒ +⇓ +⇔ +⇕ +⇖ +⇗ +⇘ +⇙ +⇚ +⇛ +⇜ +⇝ +⇞ +⇟ +⇠ +⇡ +⇢ +⇣ +⇤ +⇥ +⇦ +⇧ +⇨ +⇩ +⇪ +⇫ +⇬ +⇭ +⇮ +⇯ +⇰ +⇱ +⇲ +⇳ +⇴ +⇵ +⇶ +⇷ +⇸ +⇹ +⇺ +⇻ +⇼ +⇽ +⇾ +⇿ +∀ +∁ +∂ +∃ +∄ +∅ +∆ +∇ +∈ +∉ +∋ +∏ +∑ +− +∓ +∕ +∖ +∙ +√ +∛ +∜ +∝ +∞ +∟ +∠ +∡ +∢ +∥ +∧ +∨ +∩ +∪ +∫ +∬ +∭ +∮ +∯ +∰ +∱ +∲ +∳ +∴ +∵ +∶ +∷ +∸ +∹ +∺ +∻ +∼ +∽ +∾ +∿ +≀ +≁ +≂ +≃ +≄ +≅ +≆ +≇ +≈ +≉ +≊ +≋ +≌ +≍ +≎ +≏ +≐ +≑ +≒ +≓ +≔ +≕ +≖ +≗ +≘ +≙ +≚ +≛ +≜ +≝ +≞ +≟ +≠ +≡ +≢ +≣ +≤ +≥ +≦ +≧ +≨ +≩ +≪ +≫ +≬ +≭ +≮ +≯ +≰ +≱ +≲ +≳ +≴ +≵ +≶ +≷ +≸ +≹ +≺ +≻ +≼ +≽ +≾ +≿ +⊀ +⊁ +⊂ +⊃ +⊄ +⊅ +⊆ +⊇ +⊈ +⊉ +⊊ +⊋ +⊌ +⊍ +⊎ +⊏ +⊐ +⊑ +⊒ +⊓ +⊔ +⊕ +⊖ +⊗ +⊘ +⊙ +⊚ +⊛ +⊜ +⊝ +⊞ +⊟ +⊠ +⊡ +⊢ +⊣ +⊤ +⊥ +⊦ +⊧ +⊨ +⊩ +⊪ +⊫ +⊬ +⊭ +⊮ +⊯ +⊰ +⊱ +⊲ +⊳ +⊴ +⊵ +⊶ +⊷ +⊸ +⊹ +⊺ +⊻ +⊼ +⊽ +⊾ +⊿ +⋅ +⌀ +⌃ +⌘ +⌚ +⌛ +⌤ +⌥ +⌦ +⌧ +⌨ +〉 +⌫ +⌬ +⌭ +⌮ +⌯ +⍵ +⍺ +⎆ +⎇ +⎈ +⎉ +⎊ +⎋ +⎌ +⎍ +⎎ +⎏ +⎐ +⎑ +⎒ +⎓ +⎔ +⎕ +⎖ +⎗ +⎘ +⎙ +⎚ +⎛ +⎜ +⎝ +⎞ +⎟ +⎠ +⎡ +⎢ +⎣ +⎤ +⎥ +⎦ +⎧ +⎨ +⎩ +⎪ +⎫ +⎬ +⎭ +⎮ +⎯ +⎰ +⎱ +⎲ +⎳ +⎴ +⎵ +⎶ +⎷ +⎸ +⎹ +⎺ +⎻ +⎼ +⎽ +⎾ +⎿ +⏀ +⏁ +⏂ +⏃ +⏄ +⏅ +⏆ +⏇ +⏈ +⏉ +⏊ +⏋ +⏌ +⏍ +⏎ +⏏ +⏐ +⏑ +⏒ +⏓ +⏔ +⏕ +⏖ +⏗ +⏘ +⏙ +⏚ +⏛ +⏜ +⏝ +⏞ +⏟ +⏠ +⏡ +⏢ +⏣ +⏤ +⏥ +⏦ +⏧ +⏨ +⏩ +⏪ +⏫ +⏬ +⏭ +⏮ +⏯ +⏰ +⏱ +⏲ +⏳ +⏴ +⏵ +⏶ +⏷ +⏸ +⏹ +⏺ +⏻ +⏼ +⏽ +⏾ +⏿ +① +② +③ +④ +⑤ +⑥ +⑦ +⑧ +⑨ +⑩ +⑪ +⑫ +⑬ +⑭ +⑮ +⑯ +⑰ +⑱ +⑲ +⑳ +Ⓜ +━ +╆ +╳ +▁ +█ +■ +□ +▪ +▫ +▬ +▲ +△ +▶ +▷ +▼ +▽ +◀ +◆ +◇ +◉ +◊ +○ +◎ +● +◐ +◥ +◻ +◼ +◽ +◾ +☀ +☁ +☂ +☃ +☄ +★ +☆ +☇ +☈ +☉ +☊ +☋ +☌ +☍ +☎ +☏ +☐ +☑ +☒ +☓ +☔ +☕ +☖ +☗ +☘ +☙ +☚ +☛ +☜ +☝ +☞ +☟ +☠ +☡ +☢ +☣ +☤ +☥ +☦ +☧ +☨ +☩ +☪ +☫ +☬ +☭ +☮ +☯ +☰ +☱ +☲ +☳ +☴ +☵ +☶ +☷ +☸ +☹ +☺ +☻ +☼ +☽ +☾ +☿ +♀ +♁ +♂ +♃ +♄ +♅ +♆ +♇ +♈ +♉ +♊ +♋ +♌ +♍ +♎ +♏ +♐ +♑ +♒ +♓ +♔ +♕ +♖ +♗ +♘ +♙ +♚ +♛ +♜ +♝ +♞ +♟ +♠ +♡ +♢ +♣ +♤ +♥ +♦ +♧ +♨ +♩ +♪ +♫ +♬ +♭ +♮ +♯ +♰ +♱ +♲ +♳ +♴ +♵ +♶ +♷ +♸ +♹ +♺ +♻ +♼ +♽ +♾ +♿ +⚀ +⚁ +⚂ +⚃ +⚄ +⚅ +⚆ +⚇ +⚈ +⚉ +⚊ +⚋ +⚌ +⚍ +⚎ +⚏ +⚐ +⚑ +⚒ +⚓ +⚔ +⚕ +⚖ +⚗ +⚘ +⚙ +⚚ +⚛ +⚜ +⚝ +⚞ +⚟ +⚠ +⚡ +⚢ +⚣ +⚤ +⚥ +⚦ +⚧ +⚨ +⚩ +⚪ +⚫ +⚬ +⚭ +⚮ +⚯ +⚰ +⚱ +⚲ +⚳ +⚴ +⚵ +⚶ +⚷ +⚸ +⚹ +⚺ +⚻ +⚼ +⚽ +⚾ +⚿ +⛀ +⛁ +⛂ +⛃ +⛄ +⛅ +⛆ +⛇ +⛈ +⛉ +⛊ +⛋ +⛌ +⛍ +⛎ +⛏ +⛐ +⛑ +⛒ +⛓ +⛔ +⛕ +⛖ +⛗ +⛘ +⛙ +⛚ +⛛ +⛜ +⛝ +⛞ +⛠ +⛡ +⛢ +⛣ +⛤ +⛥ +⛦ +⛧ +⛨ +⛩ +⛪ +⛫ +⛬ +⛭ +⛮ +⛯ +⛲ +⛳ +⛵ +⛶ +⛺ +⛽ +⛾ +⛿ +✂ +✅ +✆ +✇ +✈ +✉ +✊ +✋ +✌ +✍ +✎ +✏ +✐ +✑ +✒ +✓ +✔ +✕ +✖ +✘ +✙ +✚ +✛ +✜ +✝ +✞ +✟ +✠ +✡ +✢ +✣ +✤ +✥ +✦ +✧ +✨ +✩ +✪ +✫ +✬ +✭ +✮ +✯ +✰ +✱ +✲ +✳ +✴ +✵ +✶ +✷ +✸ +✹ +✺ +✻ +✼ +✽ +✾ +✿ +❀ +❁ +❂ +❃ +❄ +❅ +❆ +❇ +❈ +❉ +❊ +❋ +❌ +❍ +❎ +❏ +❐ +❑ +❒ +❓ +❔ +❕ +❖ +❗ +❘ +❙ +❚ +❛ +❜ +❝ +❞ +❡ +❢ +❣ +❤ +❥ +❦ +❧ +❨ +❩ +❪ +❫ +❬ +❭ +❮ +❯ +❰ +❱ +❲ +❳ +❴ +❵ +❶ +❷ +❸ +❹ +❺ +❻ +❼ +❽ +❾ +❿ +➀ +➁ +➂ +➃ +➄ +➅ +➆ +➇ +➈ +➉ +➊ +➋ +➌ +➍ +➎ +➏ +➐ +➑ +➒ +➓ +➔ +➕ +➖ +➗ +➘ +➙ +➚ +➛ +➜ +➝ +➞ +➟ +➠ +➡ +➢ +➣ +➤ +➥ +➦ +➧ +➨ +➩ +➪ +➫ +➬ +➭ +➮ +➯ +➰ +➱ +➲ +➳ +➴ +➵ +➶ +➷ +➸ +➹ +➺ +➻ +➼ +➽ +➾ +➿ +⟶ +⟹ +⤴ +⤵ +⬅ +⬆ +⬇ +⬛ +⬜ +⭐ +⭕ +  +、 +。 +々 +〆 +〇 +〈 +〉 +《 +》 +「 +」 +『 +』 +【 +】 +〒 +〔 +〕 +〖 +〗 +〜 +〰 +〵 +〽 +ぁ +あ +ぃ +い +ぅ +う +ぇ +え +ぉ +お +か +が +き +ぎ +く +ぐ +け +げ +こ +ご +さ +ざ +し +じ +す +ず +せ +ぜ +そ +ぞ +た +だ +ち +ぢ +っ +つ +づ +て +で +と +ど +な +に +ぬ +ね +の +は +ば +ぱ +ひ +び +ぴ +ふ +ぶ +ぷ +へ +べ +ぺ +ほ +ぼ +ぽ +ま +み +む +め +も +ゃ +や +ゅ +ゆ +ょ +よ +ら +り +る +れ +ろ +ゎ +わ +ゑ +を +ん +ゕ +ゖ +ゝ +ゞ +ァ +ア +ィ +イ +ゥ +ウ +ェ +エ +ォ +オ +カ +ガ +キ +ギ +ク +グ +ケ +ゲ +コ +ゴ +サ +ザ +シ +ジ +ス +ズ +セ +ゼ +ソ +ゾ +タ +ダ +チ +ヂ +ッ +ツ +ヅ +テ +デ +ト +ド +ナ +ニ +ヌ +ネ +ノ +ハ +バ +パ +ヒ +ビ +ピ +フ +ブ +プ +ヘ +ベ +ペ +ホ +ボ +ポ +マ +ミ +ム +メ +モ +ャ +ヤ +ュ +ユ +ョ +ヨ +ラ +リ +ル +レ +ロ +ヮ +ワ +ヰ +ヲ +ン +ヴ +ヵ +ヶ +ヷ +ヸ +ヹ +ヺ +・ +ー +ヽ +ヾ +ヿ +㈱ +㊗ +㊙ +㐂 +㐱 +㑇 +㑊 +㑳 +㑺 +㒺 +㕁 +㕑 +㕥 +㕮 +㘎 +㘭 +㙍 +㙘 +㙟 +㙦 +㚷 +㛃 +㛚 +㛹 +㝛 +㝠 +㝡 +㟁 +㟃 +㠇 +㠓 +㠣 +㠯 +㠶 +㡌 +㢘 +㤘 +㤙 +㥄 +㥫 +㥮 +㧐 +㧑 +㧟 +㧱 +㨗 +㨪 +㩗 +㩦 +㩳 +㪚 +㪟 +㫰 +㬉 +㬊 +㬎 +㬚 +㬪 +㭎 +㭕 +㮣 +㮾 +㰀 +㳄 +㳇 +㳒 +㳘 +㳚 +㴔 +㴪 +㴱 +㵐 +㶲 +㸃 +㸆 +㸌 +㺄 +㻬 +㼝 +㽏 +㽞 +㿠 +䁖 +䂮 +䃅 +䃎 +䃮 +䅟 +䈰 +䊀 +䌹 +䎃 +䎖 +䏝 +䏡 +䏲 +䐃 +䓖 +䓛 +䓣 +䓨 +䓫 +䓬 +䖝 +䗖 +䗛 +䗪 +䗬 +䗴 +䘏 +䘑 +䘚 +䜣 +䝉 +䝔 +䝙 +䠀 +䠶 +䢺 +䢼 +䣘 +䥽 +䦃 +䮄 +䰟 +䰾 +䲁 +䲟 +䲠 +䲢 +䴉 +䴓 +䴔 +䴕 +䴖 +䴗 +䴘 +䴙 +䶊 +䶮 +一 +丁 +七 +丄 +万 +丈 +三 +上 +下 +丌 +不 +与 +丏 +丐 +丑 +专 +且 +丕 +世 +丘 +丙 +业 +丛 +东 +丝 +丞 +丟 +両 +丢 +两 +严 +並 +丧 +个 +丫 +中 +丮 +丰 +丱 +串 +临 +丸 +丹 +为 +主 +丼 +丽 +举 +丿 +乂 +乃 +久 +么 +义 +之 +乌 +乍 +乎 +乏 +乐 +乒 +乓 +乔 +乖 +乗 +乘 +乙 +乜 +九 +乞 +也 +习 +乡 +书 +乩 +乭 +买 +乱 +乳 +乸 +乹 +乾 +亀 +亂 +了 +予 +争 +亊 +事 +二 +亍 +于 +亏 +云 +互 +亓 +五 +井 +亘 +亙 +亚 +些 +亜 +亞 +亟 +亡 +亢 +交 +亥 +亦 +产 +亨 +亩 +享 +京 +亭 +亮 +亯 +亰 +亱 +亲 +亳 +亵 +亶 +亷 +亸 +亹 +人 +亾 +亿 +什 +仁 +仂 +仃 +仄 +仅 +仆 +仇 +仉 +今 +介 +仍 +从 +仏 +仑 +仓 +仔 +仕 +他 +仗 +付 +仙 +仛 +仜 +仝 +仞 +仟 +仡 +代 +令 +以 +仨 +仩 +仪 +仫 +们 +仮 +仰 +仱 +仲 +仳 +仵 +件 +价 +仺 +任 +仼 +份 +仿 +伀 +企 +伃 +伈 +伉 +伊 +伋 +伍 +伎 +伏 +伐 +休 +伔 +伕 +众 +优 +伙 +会 +伛 +伝 +伞 +伟 +传 +伢 +伣 +伤 +伥 +伦 +伧 +伪 +伫 +伬 +伭 +伯 +估 +伱 +伲 +伴 +伶 +伷 +伸 +伺 +伻 +似 +伽 +伾 +佀 +佁 +佃 +但 +佇 +佈 +佉 +佋 +佌 +位 +低 +住 +佐 +佑 +佒 +体 +佔 +何 +佖 +佗 +佘 +余 +佚 +佛 +作 +佝 +佞 +佟 +你 +佢 +佣 +佤 +佥 +佧 +佩 +佪 +佬 +佯 +佰 +佳 +佴 +併 +佶 +佷 +佸 +佹 +佺 +佻 +佼 +佽 +佾 +使 +侀 +侁 +侂 +侃 +侄 +侅 +來 +侇 +侈 +侉 +侊 +例 +侍 +侏 +侐 +侑 +侔 +侖 +侗 +侘 +侚 +供 +侜 +依 +侞 +侠 +価 +侣 +侥 +侦 +侧 +侨 +侩 +侪 +侬 +侮 +侯 +侲 +侳 +侴 +侵 +侶 +侷 +侹 +侻 +便 +俁 +係 +促 +俄 +俅 +俇 +俉 +俊 +俋 +俌 +俍 +俎 +俏 +俐 +俑 +俓 +俔 +俗 +俘 +俙 +俚 +俛 +俜 +保 +俞 +俟 +俠 +信 +俣 +俤 +俦 +俨 +俩 +俪 +俫 +俬 +俭 +修 +俯 +俱 +俳 +俴 +俵 +俶 +俷 +俸 +俺 +俽 +俾 +倀 +倃 +倅 +倆 +倇 +倈 +倉 +個 +倌 +倍 +倏 +倐 +們 +倒 +倓 +倔 +倕 +倖 +倗 +倘 +候 +倚 +倛 +倜 +倞 +借 +倠 +倡 +倢 +倣 +値 +倥 +倦 +倧 +倨 +倩 +倪 +倫 +倬 +倭 +倮 +倰 +倳 +倴 +倶 +倷 +倸 +倹 +债 +倻 +值 +倾 +偁 +偃 +偅 +假 +偈 +偉 +偊 +偋 +偌 +偍 +偎 +偏 +偐 +偓 +偕 +偘 +做 +偛 +停 +偝 +偞 +偟 +偠 +偡 +偢 +健 +偨 +偩 +偪 +偫 +偬 +偭 +偯 +偰 +偲 +側 +偵 +偶 +偷 +偸 +偺 +偻 +偽 +偾 +偿 +傀 +傂 +傃 +傅 +傈 +傉 +傋 +傌 +傍 +傎 +傑 +傒 +傔 +傕 +傖 +傘 +備 +傚 +傛 +傜 +傝 +傞 +傢 +傣 +傥 +傧 +储 +傩 +催 +傭 +傮 +傯 +傰 +傱 +傲 +傳 +傴 +債 +傷 +傺 +傻 +傽 +傾 +傿 +僁 +僂 +僄 +僅 +僆 +僇 +僈 +僉 +僊 +僋 +働 +僎 +像 +僑 +僓 +僔 +僕 +僖 +僗 +僙 +僚 +僛 +僜 +僝 +僞 +僡 +僤 +僥 +僦 +僧 +僨 +僩 +僪 +僬 +僭 +僮 +僰 +僱 +僳 +僴 +僵 +僶 +僸 +價 +僻 +僽 +僾 +僿 +儀 +儁 +儂 +儃 +億 +儆 +儇 +儈 +儉 +儋 +儌 +儐 +儑 +儒 +儓 +儔 +儕 +儗 +儘 +儚 +儛 +儜 +儞 +償 +儠 +儡 +儢 +儤 +儥 +儦 +優 +儫 +儰 +儱 +儲 +儳 +儴 +儵 +儷 +儸 +儹 +儺 +儻 +儼 +儽 +儿 +兀 +允 +元 +兄 +充 +兆 +兇 +先 +光 +克 +兌 +免 +兎 +児 +兑 +兒 +兔 +兕 +兖 +兗 +兙 +党 +兛 +兜 +兝 +兞 +兠 +兡 +兢 +兣 +入 +內 +全 +兩 +兪 +八 +公 +六 +兮 +兰 +共 +关 +兴 +兵 +其 +具 +典 +兹 +养 +兼 +兽 +兿 +冀 +冁 +冂 +冄 +内 +円 +冇 +冈 +冉 +冊 +册 +再 +冏 +冐 +冑 +冒 +冓 +冔 +冕 +冗 +冘 +写 +冚 +军 +农 +冞 +冠 +冢 +冣 +冤 +冥 +冧 +冨 +冪 +冬 +冮 +冯 +冰 +冱 +冲 +决 +冴 +况 +冶 +冷 +冺 +冻 +冼 +冽 +净 +凃 +凄 +凅 +准 +凇 +凈 +凉 +凊 +凋 +凌 +凍 +减 +凑 +凔 +凖 +凘 +凛 +凜 +凝 +凞 +几 +凡 +凢 +凤 +処 +凪 +凫 +凬 +凭 +凯 +凰 +凱 +凳 +凵 +凶 +凸 +凹 +出 +击 +凼 +函 +凿 +刀 +刁 +刂 +刃 +刄 +分 +切 +刈 +刉 +刊 +刌 +刍 +刎 +刑 +划 +刓 +刖 +列 +刘 +则 +刚 +创 +刜 +初 +刞 +删 +判 +別 +刦 +刧 +刨 +利 +刪 +别 +刬 +刭 +刮 +到 +刱 +刲 +刳 +刵 +制 +刷 +券 +刹 +刺 +刻 +刼 +刽 +刿 +剀 +剁 +剂 +剃 +剄 +剅 +剆 +則 +剉 +削 +剋 +剌 +前 +剎 +剏 +剐 +剑 +剒 +剔 +剕 +剖 +剗 +剚 +剛 +剜 +剝 +剞 +剟 +剡 +剣 +剤 +剥 +剧 +剩 +剪 +剫 +剬 +剭 +剮 +副 +剰 +割 +剳 +剴 +創 +剷 +剸 +剹 +剺 +剻 +剼 +剽 +剿 +劀 +劁 +劂 +劃 +劄 +劇 +劈 +劉 +劊 +劋 +劌 +劍 +劐 +劑 +劓 +劔 +劖 +劗 +劘 +劙 +力 +劝 +办 +功 +加 +务 +劢 +劣 +劦 +动 +助 +努 +劫 +劬 +劭 +励 +劲 +劳 +労 +劵 +効 +劼 +劾 +势 +勁 +勃 +勅 +勇 +勉 +勋 +勌 +勍 +勐 +勑 +勒 +勔 +動 +勖 +勗 +勘 +務 +勚 +勛 +勝 +勞 +募 +勢 +勣 +勤 +勦 +勧 +勩 +勰 +勱 +勲 +勳 +勴 +勵 +勷 +勸 +勺 +勻 +勾 +勿 +匀 +匁 +匂 +匃 +匄 +包 +匆 +匈 +匊 +匋 +匍 +匏 +匐 +匕 +化 +北 +匙 +匜 +匝 +匟 +匠 +匡 +匢 +匣 +匦 +匪 +匭 +匮 +匯 +匰 +匱 +匲 +匴 +匷 +匸 +匹 +区 +医 +匼 +匽 +匾 +匿 +區 +十 +千 +卅 +升 +午 +卉 +半 +卋 +卌 +卍 +华 +协 +卐 +卑 +卒 +卓 +協 +单 +卖 +南 +単 +博 +卜 +卞 +卟 +占 +卡 +卢 +卣 +卤 +卦 +卧 +卫 +卬 +卮 +卯 +印 +危 +卲 +即 +却 +卵 +卷 +卸 +卹 +卺 +卻 +卼 +卽 +卿 +厀 +厂 +厄 +厅 +历 +厉 +压 +厌 +厍 +厎 +厒 +厓 +厔 +厕 +厖 +厗 +厘 +厙 +厚 +厜 +厝 +厞 +原 +厠 +厢 +厣 +厤 +厥 +厦 +厨 +厩 +厬 +厭 +厮 +厰 +厲 +厳 +厴 +厹 +去 +厾 +县 +叁 +参 +參 +叄 +叆 +叇 +又 +叉 +及 +友 +双 +反 +収 +发 +叔 +叕 +取 +受 +变 +叙 +叚 +叛 +叟 +叠 +叡 +叢 +口 +古 +句 +另 +叨 +叩 +只 +叫 +召 +叭 +叮 +可 +台 +叱 +史 +右 +叵 +叶 +号 +司 +叹 +叻 +叼 +叽 +吁 +吃 +各 +吆 +合 +吉 +吊 +吋 +同 +名 +后 +吏 +吐 +向 +吒 +吓 +吔 +吕 +吖 +吗 +吚 +君 +吝 +吞 +吟 +吠 +吡 +吣 +吥 +否 +吧 +吨 +吩 +吪 +含 +听 +吭 +吮 +启 +吰 +吱 +吲 +吳 +吴 +吵 +吶 +吷 +吸 +吹 +吻 +吼 +吽 +吾 +呀 +呂 +呃 +呆 +呇 +呈 +呉 +告 +呋 +呌 +呎 +呐 +呑 +呒 +呓 +呔 +呕 +呖 +呗 +员 +呙 +呛 +呜 +呢 +呣 +呤 +呥 +呦 +周 +呪 +呫 +呬 +呰 +呱 +呲 +味 +呴 +呵 +呶 +呷 +呸 +呺 +呻 +呼 +命 +呾 +呿 +咀 +咁 +咂 +咄 +咅 +咆 +咇 +咈 +咉 +咊 +咋 +和 +咍 +咎 +咏 +咐 +咑 +咒 +咔 +咕 +咖 +咗 +咘 +咙 +咚 +咛 +咝 +咟 +咠 +咡 +咢 +咣 +咤 +咥 +咦 +咧 +咨 +咩 +咪 +咫 +咬 +咭 +咮 +咯 +咱 +咲 +咳 +咴 +咶 +咷 +咸 +咺 +咻 +咼 +咽 +咾 +咿 +哀 +品 +哂 +哃 +哄 +哅 +哆 +哇 +哈 +哉 +哌 +响 +哎 +哏 +哐 +哑 +哒 +哓 +哔 +哕 +哖 +哗 +哙 +哚 +哝 +哞 +哟 +員 +哢 +哤 +哥 +哦 +哧 +哨 +哩 +哪 +哫 +哭 +哮 +哱 +哲 +哳 +哶 +哺 +哼 +哽 +哿 +唁 +唃 +唄 +唅 +唆 +唇 +唈 +唉 +唌 +唏 +唐 +唑 +唒 +唔 +唕 +唖 +唗 +唘 +唚 +唛 +唝 +唠 +唢 +唣 +唤 +唦 +唧 +唪 +唫 +唬 +唭 +售 +唯 +唰 +唱 +唲 +唳 +唴 +唵 +唶 +唷 +唸 +唻 +唼 +唾 +唿 +啁 +啃 +啄 +啅 +商 +啉 +啊 +啍 +啎 +問 +啐 +啑 +啒 +啓 +啕 +啖 +啗 +啚 +啜 +啞 +啟 +啡 +啢 +啣 +啤 +啥 +啦 +啧 +啪 +啫 +啬 +啭 +啮 +啯 +啰 +啱 +啲 +啴 +啵 +啶 +啷 +啸 +啻 +啼 +啽 +啾 +喀 +喁 +喂 +喃 +善 +喆 +喇 +喈 +喉 +喊 +喋 +喌 +喍 +喏 +喑 +喒 +喓 +喔 +喘 +喙 +喚 +喜 +喝 +喟 +喢 +喣 +喤 +喥 +喦 +喧 +喨 +喩 +喪 +喫 +喬 +喭 +單 +喰 +喱 +喲 +喳 +喵 +営 +喷 +喹 +喻 +喼 +喽 +喾 +喿 +嗀 +嗁 +嗃 +嗄 +嗅 +嗆 +嗇 +嗈 +嗉 +嗊 +嗋 +嗌 +嗍 +嗎 +嗏 +嗐 +嗑 +嗒 +嗓 +嗔 +嗕 +嗖 +嗚 +嗛 +嗜 +嗝 +嗞 +嗟 +嗡 +嗢 +嗣 +嗤 +嗥 +嗦 +嗧 +嗨 +嗩 +嗪 +嗫 +嗬 +嗮 +嗯 +嗲 +嗳 +嗵 +嗶 +嗷 +嗹 +嗺 +嗼 +嗽 +嗾 +嗿 +嘀 +嘁 +嘂 +嘄 +嘅 +嘆 +嘈 +嘉 +嘌 +嘍 +嘎 +嘏 +嘐 +嘑 +嘒 +嘓 +嘔 +嘕 +嘖 +嘗 +嘘 +嘚 +嘛 +嘜 +嘝 +嘞 +嘟 +嘠 +嘡 +嘢 +嘣 +嘤 +嘥 +嘧 +嘩 +嘬 +嘭 +嘮 +嘯 +嘰 +嘱 +嘲 +嘳 +嘴 +嘵 +嘶 +嘷 +嘸 +嘹 +嘻 +嘽 +嘾 +嘿 +噀 +噁 +噂 +噅 +噆 +噇 +噈 +噉 +噊 +噌 +噍 +噎 +噏 +噓 +噔 +噗 +噘 +噙 +噚 +噛 +噜 +噝 +噞 +噠 +噢 +噣 +噤 +噥 +噦 +器 +噩 +噪 +噫 +噬 +噭 +噮 +噯 +噰 +噱 +噲 +噳 +噴 +噶 +噸 +噹 +噺 +噻 +噼 +嚀 +嚃 +嚄 +嚅 +嚆 +嚇 +嚈 +嚌 +嚍 +嚎 +嚏 +嚐 +嚒 +嚓 +嚕 +嚗 +嚘 +嚙 +嚚 +嚜 +嚞 +嚟 +嚢 +嚣 +嚤 +嚥 +嚦 +嚧 +嚨 +嚩 +嚪 +嚫 +嚬 +嚭 +嚮 +嚯 +嚲 +嚳 +嚴 +嚵 +嚶 +嚷 +嚼 +嚽 +嚾 +嚿 +囀 +囁 +囂 +囃 +囅 +囆 +囈 +囉 +囊 +囋 +囌 +囍 +囑 +囒 +囓 +囔 +囗 +囙 +囚 +四 +囝 +回 +囟 +因 +囡 +团 +団 +囤 +囧 +囪 +囫 +园 +囮 +囯 +困 +囱 +囲 +図 +围 +囵 +囶 +囷 +囹 +固 +国 +图 +囿 +圀 +圁 +圂 +圃 +圄 +圅 +圆 +圇 +圈 +圉 +圊 +國 +圌 +圍 +圏 +圐 +園 +圓 +圖 +圗 +團 +圙 +圜 +圞 +土 +圠 +圢 +圣 +圧 +在 +圩 +圪 +圫 +圬 +圭 +圮 +圯 +地 +圲 +圳 +圹 +场 +圻 +圾 +址 +坁 +坂 +坅 +均 +坉 +坊 +坋 +坌 +坍 +坎 +坏 +坐 +坑 +坒 +坖 +块 +坚 +坛 +坜 +坝 +坞 +坟 +坠 +坡 +坣 +坤 +坥 +坦 +坨 +坩 +坪 +坫 +坬 +坭 +坮 +坯 +坰 +坱 +坲 +坳 +坴 +坵 +坶 +坷 +坻 +坼 +坽 +坿 +垀 +垂 +垃 +垄 +垆 +垈 +型 +垌 +垍 +垎 +垏 +垒 +垓 +垔 +垕 +垗 +垘 +垙 +垚 +垛 +垜 +垝 +垞 +垟 +垠 +垡 +垢 +垣 +垤 +垦 +垧 +垩 +垫 +垭 +垮 +垯 +垰 +垱 +垲 +垴 +垵 +垸 +垺 +垻 +垼 +垽 +垾 +垿 +埂 +埃 +埅 +埆 +埇 +埈 +埋 +埌 +城 +埏 +埒 +埔 +埕 +埗 +埘 +埙 +埚 +埜 +埝 +域 +埠 +埡 +埢 +埤 +埧 +埨 +埪 +埫 +埭 +埮 +埯 +埳 +埴 +埵 +埶 +執 +埸 +培 +基 +埻 +埼 +埽 +堀 +堂 +堃 +堅 +堆 +堇 +堈 +堉 +堊 +堋 +堌 +堍 +堎 +堐 +堑 +堔 +堕 +堖 +堘 +堙 +堝 +堞 +堠 +堡 +堣 +堤 +堥 +堦 +堧 +堨 +堩 +堪 +堮 +堯 +堰 +報 +堲 +場 +堵 +堷 +堺 +堼 +堽 +堾 +堿 +塀 +塁 +塄 +塅 +塆 +塈 +塉 +塊 +塋 +塌 +塍 +塏 +塑 +塒 +塓 +塔 +塕 +塗 +塘 +塙 +塚 +塜 +塝 +塞 +塟 +塡 +塢 +塤 +塥 +塨 +塩 +填 +塬 +塭 +塯 +塰 +塱 +塲 +塴 +塵 +塸 +塹 +塺 +塼 +塽 +塾 +塿 +墀 +墁 +境 +墅 +墆 +墈 +墉 +墊 +墋 +墎 +墐 +墒 +墓 +墕 +墖 +増 +墘 +墙 +墚 +墜 +墝 +增 +墟 +墠 +墡 +墣 +墦 +墨 +墩 +墪 +墫 +墬 +墮 +墯 +墱 +墳 +墶 +墺 +墻 +墼 +墽 +墾 +壁 +壄 +壅 +壆 +壇 +壈 +壊 +壋 +壌 +壎 +壐 +壑 +壓 +壔 +壕 +壖 +壘 +壙 +壚 +壛 +壝 +壞 +壟 +壠 +壢 +壤 +壩 +壪 +士 +壬 +壮 +壯 +声 +壱 +売 +壳 +壴 +壶 +壷 +壸 +壹 +壺 +壻 +壼 +壽 +壾 +壿 +夀 +夃 +处 +夆 +备 +変 +夊 +夋 +夌 +复 +夎 +夏 +夐 +夒 +夔 +夕 +外 +夗 +夘 +夙 +多 +夜 +够 +夠 +夢 +夤 +夥 +大 +天 +太 +夫 +夬 +夭 +央 +夯 +失 +头 +夷 +夸 +夹 +夺 +夼 +夾 +奀 +奁 +奂 +奄 +奅 +奇 +奈 +奉 +奊 +奋 +奎 +奏 +奐 +契 +奓 +奔 +奕 +奖 +套 +奘 +奚 +奠 +奡 +奢 +奣 +奥 +奧 +奨 +奩 +奪 +奫 +奬 +奭 +奮 +奰 +奲 +女 +奴 +奶 +奸 +她 +奼 +好 +妀 +妁 +如 +妃 +妄 +妆 +妇 +妈 +妊 +妍 +妎 +妏 +妐 +妑 +妒 +妓 +妖 +妗 +妘 +妙 +妝 +妞 +妠 +妢 +妣 +妤 +妥 +妦 +妧 +妨 +妩 +妪 +妫 +妬 +妭 +妮 +妯 +妲 +妳 +妵 +妷 +妸 +妹 +妺 +妻 +妾 +姀 +姁 +姃 +姆 +姈 +姉 +姊 +始 +姌 +姍 +姎 +姏 +姐 +姑 +姒 +姓 +委 +姗 +姘 +姙 +姚 +姜 +姝 +姞 +姡 +姣 +姤 +姥 +姦 +姨 +姪 +姫 +姬 +姮 +姱 +姵 +姶 +姸 +姹 +姺 +姻 +姼 +姽 +姿 +娀 +威 +娃 +娄 +娅 +娆 +娇 +娈 +娉 +娋 +娌 +娍 +娎 +娑 +娓 +娖 +娘 +娙 +娛 +娜 +娟 +娠 +娣 +娥 +娩 +娫 +娭 +娯 +娱 +娲 +娳 +娴 +娵 +娶 +娷 +娸 +娼 +娽 +娿 +婀 +婁 +婆 +婉 +婊 +婌 +婍 +婐 +婑 +婓 +婕 +婗 +婘 +婚 +婞 +婟 +婠 +婢 +婣 +婤 +婥 +婦 +婧 +婪 +婫 +婬 +婭 +婯 +婳 +婴 +婵 +婶 +婷 +婸 +婺 +婻 +婼 +婿 +媂 +媃 +媄 +媆 +媊 +媐 +媒 +媓 +媔 +媕 +媖 +媗 +媚 +媛 +媜 +媞 +媟 +媢 +媥 +媦 +媧 +媪 +媬 +媭 +媮 +媯 +媰 +媱 +媲 +媳 +媵 +媸 +媺 +媻 +媼 +媽 +媾 +媿 +嫁 +嫂 +嫄 +嫇 +嫈 +嫉 +嫋 +嫌 +嫐 +嫒 +嫔 +嫕 +嫖 +嫗 +嫘 +嫚 +嫛 +嫜 +嫠 +嫡 +嫢 +嫣 +嫥 +嫦 +嫩 +嫪 +嫫 +嫭 +嫮 +嫰 +嫱 +嫲 +嫳 +嫴 +嫵 +嫶 +嫷 +嫺 +嫻 +嫽 +嫿 +嬀 +嬃 +嬅 +嬈 +嬉 +嬋 +嬌 +嬎 +嬐 +嬓 +嬖 +嬗 +嬙 +嬛 +嬝 +嬡 +嬢 +嬤 +嬥 +嬨 +嬪 +嬬 +嬭 +嬰 +嬲 +嬴 +嬷 +嬸 +嬽 +嬾 +嬿 +孀 +孁 +孃 +孅 +孆 +孈 +孋 +孌 +子 +孑 +孓 +孔 +孕 +孖 +字 +存 +孙 +孚 +孛 +孜 +孝 +孟 +孢 +季 +孤 +孥 +学 +孩 +孪 +孫 +孬 +孮 +孰 +孱 +孲 +孳 +孵 +孷 +學 +孺 +孻 +孼 +孽 +孿 +宁 +宂 +它 +宄 +宅 +宇 +守 +安 +宋 +完 +宍 +宎 +宏 +宓 +宕 +宗 +官 +宙 +定 +宛 +宜 +宝 +实 +実 +宠 +审 +客 +宣 +室 +宥 +宦 +宧 +宨 +宪 +宫 +宬 +宮 +宰 +害 +宴 +宵 +家 +宸 +容 +宽 +宾 +宿 +寀 +寁 +寂 +寃 +寄 +寅 +密 +寇 +寈 +寊 +寋 +富 +寍 +寐 +寑 +寒 +寓 +寔 +寕 +寖 +寗 +寘 +寙 +寛 +寜 +寝 +寞 +察 +寠 +寡 +寢 +寤 +寥 +實 +寧 +寨 +審 +寪 +寫 +寬 +寮 +寯 +寰 +寱 +寳 +寵 +寶 +寸 +对 +寺 +寻 +导 +対 +寿 +封 +専 +尃 +射 +尅 +将 +將 +專 +尉 +尊 +尋 +尌 +對 +導 +小 +尐 +少 +尒 +尓 +尔 +尕 +尖 +尗 +尘 +尙 +尚 +尜 +尝 +尟 +尢 +尤 +尥 +尧 +尨 +尪 +尬 +尭 +尰 +就 +尳 +尴 +尷 +尸 +尹 +尺 +尻 +尼 +尽 +尾 +尿 +局 +屁 +层 +屃 +屄 +居 +屆 +屇 +屈 +屉 +届 +屋 +屌 +屍 +屎 +屏 +屐 +屑 +屓 +屔 +展 +屖 +屘 +屙 +屚 +屜 +屝 +属 +屠 +屡 +屢 +屣 +層 +履 +屦 +屧 +屨 +屩 +屬 +屭 +屮 +屯 +山 +屴 +屹 +屺 +屻 +屼 +屾 +屿 +岀 +岁 +岂 +岅 +岈 +岉 +岊 +岋 +岌 +岍 +岏 +岐 +岑 +岒 +岔 +岖 +岗 +岘 +岙 +岚 +岛 +岜 +岝 +岞 +岟 +岠 +岡 +岢 +岣 +岤 +岧 +岨 +岩 +岪 +岫 +岬 +岭 +岮 +岯 +岰 +岱 +岳 +岵 +岷 +岸 +岻 +岽 +岿 +峁 +峂 +峃 +峄 +峅 +峇 +峉 +峊 +峋 +峌 +峍 +峐 +峒 +峗 +峘 +峙 +峚 +峛 +峝 +峞 +峠 +峡 +峣 +峤 +峥 +峦 +峧 +峨 +峩 +峪 +峬 +峭 +峮 +峯 +峰 +峱 +峴 +島 +峷 +峻 +峼 +峽 +峿 +崀 +崁 +崂 +崃 +崄 +崆 +崇 +崈 +崋 +崌 +崍 +崎 +崏 +崐 +崑 +崒 +崔 +崖 +崗 +崘 +崙 +崚 +崛 +崝 +崞 +崟 +崠 +崡 +崢 +崣 +崤 +崥 +崦 +崧 +崨 +崩 +崬 +崭 +崮 +崰 +崱 +崳 +崴 +崵 +崶 +崷 +崺 +崽 +崾 +崿 +嵁 +嵂 +嵃 +嵅 +嵇 +嵊 +嵋 +嵌 +嵎 +嵐 +嵑 +嵒 +嵕 +嵖 +嵗 +嵘 +嵙 +嵚 +嵛 +嵜 +嵝 +嵞 +嵣 +嵥 +嵨 +嵩 +嵫 +嵬 +嵮 +嵯 +嵰 +嵱 +嵲 +嵴 +嵷 +嵺 +嵻 +嵽 +嵾 +嵿 +嶀 +嶁 +嶂 +嶃 +嶄 +嶅 +嶆 +嶇 +嶈 +嶉 +嶊 +嶋 +嶌 +嶍 +嶒 +嶓 +嶔 +嶕 +嶗 +嶙 +嶚 +嶜 +嶝 +嶞 +嶟 +嶠 +嶡 +嶢 +嶦 +嶧 +嶨 +嶩 +嶪 +嶬 +嶭 +嶮 +嶰 +嶱 +嶲 +嶴 +嶵 +嶷 +嶸 +嶺 +嶼 +嶽 +巀 +巂 +巃 +巄 +巅 +巆 +巇 +巉 +巋 +巌 +巍 +巎 +巏 +巑 +巒 +巔 +巕 +巖 +巗 +巘 +巛 +川 +州 +巟 +巡 +巢 +巣 +工 +左 +巧 +巨 +巩 +巫 +差 +巯 +巰 +己 +已 +巳 +巴 +巵 +巶 +巷 +巹 +巻 +巽 +巾 +巿 +帀 +币 +市 +布 +帅 +帆 +师 +帊 +希 +帏 +帐 +帑 +帔 +帕 +帖 +帗 +帘 +帙 +帚 +帛 +帜 +帝 +帟 +帠 +帡 +帢 +帣 +帤 +帥 +带 +帧 +帨 +帩 +師 +帬 +席 +帮 +帯 +帰 +帱 +帳 +帴 +帶 +帷 +常 +帻 +帼 +帽 +帾 +幀 +幂 +幃 +幄 +幅 +幇 +幌 +幎 +幏 +幑 +幓 +幔 +幕 +幖 +幗 +幘 +幙 +幚 +幛 +幝 +幞 +幟 +幠 +幡 +幢 +幣 +幦 +幧 +幨 +幩 +幪 +幫 +幬 +幭 +幰 +干 +平 +年 +幵 +并 +幷 +幸 +幹 +幺 +幻 +幼 +幽 +幾 +广 +庀 +庁 +庂 +広 +庄 +庆 +庇 +庈 +庉 +床 +庋 +庌 +序 +庐 +庑 +库 +应 +底 +庖 +店 +庙 +庚 +庛 +府 +庞 +废 +庠 +庢 +庣 +庤 +庥 +度 +座 +庨 +庪 +庫 +庬 +庭 +庮 +庰 +庱 +庲 +庳 +庴 +庵 +庶 +康 +庸 +庹 +庻 +庼 +庽 +庾 +廁 +廂 +廃 +廄 +廅 +廆 +廇 +廈 +廉 +廊 +廋 +廌 +廍 +廎 +廐 +廑 +廒 +廓 +廔 +廕 +廖 +廗 +廘 +廙 +廚 +廛 +廜 +廝 +廞 +廟 +廠 +廡 +廢 +廣 +廥 +廦 +廧 +廨 +廩 +廪 +廬 +廮 +廯 +廰 +廱 +廳 +廵 +延 +廷 +廸 +廹 +建 +廻 +廼 +廾 +廿 +开 +弁 +异 +弃 +弄 +弅 +弆 +弇 +弈 +弉 +弊 +弋 +弌 +弍 +式 +弐 +弑 +弒 +弓 +弔 +引 +弖 +弗 +弘 +弚 +弛 +弝 +弟 +张 +弢 +弣 +弤 +弥 +弦 +弧 +弨 +弩 +弭 +弮 +弯 +弱 +弳 +張 +弶 +強 +弸 +弹 +强 +弼 +弾 +彀 +彃 +彄 +彅 +彆 +彈 +彉 +彊 +彋 +彌 +彎 +彏 +彐 +归 +当 +彔 +录 +彖 +彗 +彘 +彙 +彜 +彝 +彞 +彟 +彠 +彡 +形 +彣 +彤 +彥 +彦 +彧 +彩 +彪 +彫 +彬 +彭 +彯 +彰 +影 +彳 +彴 +彷 +彸 +役 +彻 +彼 +彾 +彿 +往 +征 +徂 +徃 +径 +待 +徇 +很 +徉 +徊 +律 +後 +徐 +徑 +徒 +従 +徕 +得 +徘 +徙 +徛 +徜 +從 +徠 +御 +徥 +徦 +徧 +徨 +復 +循 +徫 +徬 +徭 +微 +徯 +徲 +徳 +徴 +徵 +德 +徸 +徹 +徼 +徽 +徾 +徿 +忀 +忁 +心 +必 +忆 +忉 +忌 +忍 +忏 +忐 +忑 +忒 +忔 +忕 +忖 +志 +忘 +忙 +応 +忝 +忞 +忠 +忡 +忣 +忤 +忥 +忧 +忨 +忪 +快 +忬 +忭 +忮 +忯 +忱 +忳 +念 +忷 +忸 +忺 +忻 +忼 +忽 +忾 +忿 +怀 +态 +怂 +怃 +怄 +怅 +怆 +怊 +怋 +怍 +怎 +怏 +怐 +怒 +怓 +怔 +怕 +怖 +怗 +怙 +怚 +怛 +怜 +思 +怞 +怠 +怡 +怢 +急 +怦 +性 +怨 +怩 +怪 +怫 +怬 +怭 +怮 +怯 +怱 +怲 +怳 +怴 +怵 +怷 +怹 +总 +怼 +怿 +恀 +恁 +恂 +恃 +恅 +恆 +恇 +恉 +恊 +恋 +恌 +恍 +恐 +恒 +恓 +恔 +恕 +恙 +恚 +恛 +恝 +恞 +恟 +恠 +恡 +恢 +恣 +恤 +恥 +恧 +恨 +恩 +恪 +恫 +恬 +恭 +息 +恰 +恲 +恳 +恵 +恶 +恸 +恹 +恺 +恻 +恼 +恽 +恿 +悀 +悁 +悃 +悄 +悅 +悆 +悇 +悈 +悉 +悊 +悌 +悍 +悐 +悒 +悔 +悕 +悖 +悗 +悚 +悛 +悝 +悞 +悟 +悠 +悢 +患 +悤 +悦 +悧 +您 +悩 +悪 +悫 +悬 +悭 +悯 +悰 +悱 +悲 +悳 +悴 +悵 +悶 +悷 +悸 +悹 +悺 +悻 +悼 +悽 +悾 +惄 +情 +惆 +惇 +惈 +惉 +惊 +惋 +惌 +惎 +惏 +惑 +惓 +惔 +惕 +惘 +惙 +惚 +惛 +惜 +惝 +惟 +惠 +惡 +惢 +惣 +惤 +惥 +惦 +惧 +惨 +惩 +惪 +惫 +惬 +惭 +惮 +惯 +惰 +惱 +惲 +想 +惴 +惵 +惶 +惷 +惸 +惹 +惺 +惻 +惼 +惾 +愀 +愁 +愃 +愅 +愆 +愈 +愉 +愊 +愍 +愎 +意 +愐 +愒 +愓 +愔 +愕 +愖 +愚 +愛 +愜 +感 +愠 +愣 +愤 +愦 +愧 +愨 +愫 +愬 +愭 +愮 +愯 +愲 +愴 +愶 +愷 +愼 +愽 +愾 +愿 +慁 +慂 +慄 +慅 +慆 +慇 +慈 +慉 +慊 +態 +慌 +慍 +慎 +慑 +慒 +慓 +慔 +慕 +慘 +慚 +慛 +慜 +慝 +慞 +慟 +慢 +慣 +慤 +慥 +慧 +慨 +慪 +慫 +慬 +慭 +慮 +慰 +慱 +慲 +慳 +慴 +慵 +慶 +慷 +慹 +慺 +慼 +慽 +慾 +憀 +憂 +憃 +憇 +憉 +憊 +憋 +憍 +憎 +憐 +憑 +憒 +憓 +憔 +憕 +憖 +憙 +憚 +憛 +憝 +憟 +憡 +憢 +憤 +憧 +憨 +憩 +憪 +憫 +憬 +憭 +憮 +憯 +憰 +憱 +憲 +憴 +憵 +憶 +憷 +憸 +憺 +憻 +憼 +憾 +憿 +懁 +懂 +懃 +懅 +懆 +懇 +懈 +應 +懊 +懋 +懌 +懍 +懐 +懑 +懒 +懔 +懘 +懞 +懟 +懠 +懣 +懤 +懥 +懦 +懧 +懨 +懪 +懫 +懭 +懮 +懰 +懱 +懲 +懵 +懶 +懷 +懸 +懺 +懻 +懼 +懽 +懾 +懿 +戀 +戁 +戃 +戄 +戆 +戇 +戈 +戉 +戊 +戋 +戌 +戍 +戎 +戏 +成 +我 +戒 +戔 +戕 +或 +戗 +战 +戙 +戚 +戛 +戞 +戟 +戠 +戡 +戢 +戣 +戤 +戥 +戦 +戧 +戩 +截 +戬 +戭 +戮 +戯 +戰 +戱 +戲 +戳 +戴 +戶 +户 +戸 +戹 +戺 +戻 +戼 +戽 +戾 +房 +所 +扁 +扂 +扃 +扅 +扆 +扇 +扈 +扉 +扊 +手 +才 +扎 +扐 +扑 +扒 +打 +扔 +払 +托 +扙 +扛 +扜 +扞 +扡 +扢 +扣 +扤 +扥 +扦 +执 +扩 +扪 +扫 +扬 +扭 +扮 +扯 +扰 +扱 +扳 +扶 +批 +扺 +扻 +扼 +扽 +找 +承 +技 +抃 +抄 +抆 +抇 +抉 +把 +抌 +抎 +抏 +抑 +抒 +抓 +抔 +投 +抖 +抗 +折 +抚 +抛 +抜 +抝 +択 +抟 +抠 +抡 +抢 +护 +报 +抦 +抨 +抪 +披 +抬 +抭 +抮 +抱 +抴 +抵 +抶 +抹 +抻 +押 +抽 +抾 +抿 +拂 +拃 +拄 +担 +拆 +拇 +拈 +拉 +拊 +拋 +拌 +拍 +拎 +拏 +拐 +拑 +拒 +拓 +拔 +拕 +拖 +拗 +拘 +拙 +拚 +招 +拜 +拝 +拟 +拠 +拡 +拢 +拣 +拤 +拥 +拦 +拧 +拨 +择 +拫 +括 +拭 +拮 +拯 +拱 +拲 +拳 +拴 +拵 +拶 +拷 +拸 +拹 +拺 +拼 +拽 +拾 +拿 +挀 +持 +挂 +挃 +指 +挈 +按 +挋 +挌 +挍 +挎 +挏 +挐 +挑 +挓 +挖 +挙 +挚 +挛 +挝 +挞 +挟 +挠 +挡 +挣 +挤 +挥 +挦 +挨 +挩 +挪 +挫 +挬 +振 +挱 +挲 +挴 +挵 +挶 +挹 +挺 +挻 +挼 +挽 +挾 +挿 +捁 +捂 +捃 +捄 +捅 +捆 +捉 +捊 +捋 +捌 +捍 +捎 +捏 +捐 +捒 +捔 +捕 +捖 +捗 +捘 +捜 +捞 +损 +捡 +换 +捣 +捥 +捦 +捧 +捨 +捩 +捫 +捭 +据 +捯 +捱 +捲 +捵 +捶 +捷 +捺 +捻 +捼 +捽 +掀 +掂 +掃 +掄 +掇 +授 +掉 +掊 +掌 +掎 +掏 +掐 +排 +掔 +掖 +掗 +掘 +掙 +掛 +掜 +掝 +掞 +掟 +掠 +採 +探 +掣 +掤 +接 +控 +推 +掩 +措 +掫 +掬 +掭 +掮 +掯 +掰 +掱 +掲 +掳 +掴 +掷 +掸 +掺 +掻 +掼 +掽 +掾 +揀 +揃 +揄 +揅 +揆 +揉 +揊 +揍 +揎 +描 +提 +揑 +插 +揔 +揕 +揖 +揘 +揚 +換 +揜 +揝 +揟 +揠 +握 +揣 +揤 +揥 +揨 +揩 +揪 +揫 +揭 +揮 +揯 +揱 +揲 +揳 +援 +揵 +揶 +揷 +揸 +揹 +揺 +揽 +揿 +搀 +搁 +搂 +搅 +搆 +搉 +搊 +搋 +搌 +損 +搏 +搐 +搒 +搓 +搔 +搕 +搖 +搗 +搘 +搚 +搛 +搜 +搞 +搟 +搠 +搡 +搢 +搣 +搤 +搥 +搦 +搧 +搨 +搪 +搫 +搬 +搭 +搯 +搰 +搳 +搴 +搵 +搶 +搷 +搹 +携 +搽 +搾 +摀 +摁 +摂 +摃 +摄 +摅 +摆 +摇 +摈 +摊 +摋 +摍 +摎 +摏 +摐 +摑 +摒 +摓 +摔 +摘 +摛 +摜 +摝 +摞 +摟 +摠 +摡 +摦 +摧 +摩 +摭 +摮 +摯 +摰 +摲 +摳 +摴 +摵 +摶 +摸 +摹 +摺 +摻 +摽 +摿 +撂 +撃 +撄 +撅 +撇 +撈 +撊 +撋 +撌 +撏 +撐 +撑 +撒 +撓 +撕 +撖 +撗 +撙 +撚 +撜 +撝 +撞 +撟 +撠 +撢 +撣 +撤 +撥 +撦 +撩 +撫 +撬 +播 +撮 +撰 +撲 +撳 +撵 +撷 +撸 +撹 +撺 +撻 +撼 +撽 +撾 +撿 +擀 +擁 +擂 +擄 +擅 +擇 +擉 +擊 +擋 +操 +擎 +擏 +擐 +擒 +擓 +擔 +擕 +擖 +擗 +擘 +據 +擞 +擠 +擡 +擢 +擣 +擤 +擥 +擦 +擧 +擨 +擩 +擫 +擬 +擭 +擯 +擰 +擱 +擲 +擴 +擷 +擸 +擺 +擻 +擼 +擽 +擾 +擿 +攀 +攄 +攆 +攇 +攉 +攌 +攍 +攏 +攐 +攒 +攓 +攔 +攕 +攖 +攗 +攘 +攙 +攛 +攜 +攝 +攞 +攠 +攡 +攢 +攣 +攤 +攥 +攦 +攩 +攪 +攫 +攬 +攭 +攮 +支 +攲 +攳 +攴 +收 +攷 +攸 +改 +攻 +攽 +放 +政 +敁 +敂 +故 +敆 +效 +敉 +敊 +敌 +敍 +敎 +敏 +救 +敓 +敔 +敕 +敖 +敗 +敘 +教 +敛 +敜 +敝 +敞 +敟 +敢 +散 +敤 +敦 +敧 +敩 +敪 +敫 +敬 +敭 +敯 +数 +敲 +敳 +整 +敵 +敶 +敷 +數 +敹 +敺 +敻 +敾 +敿 +斀 +斁 +斂 +斃 +斄 +文 +斉 +斋 +斌 +斎 +斐 +斑 +斒 +斓 +斔 +斕 +斖 +斗 +料 +斛 +斜 +斝 +斞 +斟 +斠 +斡 +斤 +斥 +斧 +斨 +斩 +斪 +斫 +斬 +断 +斮 +斯 +新 +斲 +斵 +斶 +斷 +方 +斻 +於 +施 +斿 +旁 +旂 +旃 +旄 +旅 +旆 +旉 +旋 +旌 +旍 +旎 +族 +旐 +旒 +旓 +旖 +旗 +旙 +旚 +旛 +旝 +旞 +旟 +无 +旡 +既 +日 +旦 +旧 +旨 +早 +旬 +旭 +旮 +旯 +旰 +旱 +旲 +旳 +旴 +旵 +时 +旷 +旸 +旺 +旻 +旼 +旽 +旾 +旿 +昀 +昂 +昃 +昄 +昆 +昇 +昈 +昉 +昊 +昌 +昍 +明 +昏 +昐 +昒 +易 +昔 +昕 +昙 +昚 +昛 +昜 +昝 +昞 +星 +映 +昡 +昢 +昣 +昤 +春 +昦 +昧 +昨 +昪 +昫 +昬 +昭 +是 +昰 +昱 +昲 +昳 +昴 +昵 +昶 +昺 +昼 +昽 +显 +晁 +時 +晃 +晅 +晇 +晈 +晉 +晊 +晋 +晌 +晏 +晐 +晒 +晓 +晔 +晕 +晖 +晗 +晙 +晚 +晛 +晜 +晝 +晞 +晟 +晡 +晢 +晤 +晥 +晦 +晧 +晨 +晩 +晪 +晫 +晬 +晭 +普 +景 +晰 +晱 +晳 +晴 +晶 +晷 +晸 +智 +晻 +晼 +晾 +暀 +暁 +暂 +暃 +暄 +暅 +暆 +暇 +暈 +暉 +暊 +暋 +暌 +暍 +暎 +暏 +暐 +暑 +暕 +暖 +暗 +暘 +暝 +暟 +暠 +暡 +暢 +暦 +暧 +暨 +暩 +暫 +暮 +暰 +暱 +暲 +暴 +暵 +暶 +暸 +暹 +暻 +暾 +暿 +曀 +曄 +曅 +曆 +曇 +曈 +曉 +曊 +曋 +曌 +曏 +曒 +曔 +曖 +曙 +曚 +曛 +曜 +曝 +曠 +曡 +曣 +曦 +曧 +曨 +曩 +曬 +曭 +曮 +曰 +曲 +曳 +更 +曶 +曷 +書 +曹 +曺 +曼 +曽 +曾 +替 +最 +朁 +會 +朄 +朅 +月 +有 +朊 +朋 +服 +朏 +朐 +朒 +朓 +朔 +朕 +朖 +朗 +朘 +望 +朝 +朞 +期 +朡 +朢 +朣 +朦 +朧 +木 +未 +末 +本 +札 +朮 +术 +朱 +朳 +朴 +朵 +朶 +朸 +朹 +机 +朻 +朼 +朽 +朾 +朿 +杀 +杁 +杂 +权 +杄 +杅 +杆 +杇 +杈 +杉 +杋 +杌 +李 +杏 +材 +村 +杓 +杕 +杖 +杗 +杙 +杜 +杝 +杞 +束 +杠 +条 +杢 +杣 +杤 +来 +杧 +杨 +杩 +杪 +杬 +杭 +杮 +杯 +杰 +東 +杲 +杳 +杴 +杵 +杶 +杷 +杻 +杼 +松 +板 +极 +构 +枅 +枆 +枇 +枉 +枋 +枌 +枍 +枎 +枏 +析 +枒 +枓 +枕 +枖 +林 +枘 +枚 +枛 +果 +枝 +枞 +枠 +枡 +枢 +枣 +枥 +枧 +枨 +枪 +枫 +枭 +枯 +枰 +枱 +枲 +枳 +枴 +枵 +架 +枷 +枸 +枹 +枺 +枻 +枼 +柀 +柁 +柂 +柃 +柄 +柅 +柈 +柉 +柊 +柍 +柎 +柏 +某 +柑 +柒 +染 +柔 +柖 +柘 +柙 +柚 +柜 +柝 +柞 +柟 +柠 +柢 +柣 +柤 +查 +柧 +柩 +柫 +柬 +柮 +柯 +柰 +柱 +柲 +柳 +柴 +柵 +柶 +柷 +柸 +柹 +柺 +査 +柽 +柾 +柿 +栀 +栁 +栂 +栃 +栄 +栅 +标 +栈 +栉 +栊 +栋 +栌 +栎 +栏 +栐 +树 +栒 +栓 +栔 +栖 +栗 +栘 +栚 +栜 +栝 +栞 +栟 +校 +栢 +栨 +栩 +株 +栫 +栭 +栯 +栰 +栱 +栲 +栳 +栴 +栵 +样 +核 +根 +栻 +格 +栽 +栾 +桀 +桁 +桂 +桃 +桄 +桅 +框 +案 +桉 +桊 +桋 +桌 +桎 +桏 +桐 +桑 +桒 +桓 +桔 +桕 +桖 +桙 +桜 +桝 +桟 +桠 +桡 +桢 +档 +桤 +桥 +桦 +桧 +桨 +桩 +桫 +桭 +桮 +桯 +桱 +桲 +桴 +桵 +桶 +桷 +桹 +桺 +桼 +桾 +桿 +梀 +梁 +梂 +梃 +梅 +梆 +梇 +梉 +梌 +梏 +梐 +梒 +梓 +梔 +梗 +梘 +梛 +梜 +條 +梟 +梠 +梡 +梢 +梣 +梦 +梧 +梨 +梩 +梫 +梬 +梭 +梮 +梯 +械 +梱 +梲 +梳 +梴 +梵 +梶 +梼 +梽 +梾 +梿 +检 +棁 +棂 +棃 +棄 +棆 +棉 +棊 +棋 +棌 +棍 +棐 +棒 +棓 +棕 +棖 +棗 +棘 +棚 +棛 +棜 +棟 +棠 +棡 +棣 +棤 +棧 +棨 +棩 +棪 +棫 +棬 +森 +棯 +棰 +棱 +棲 +棳 +棵 +棶 +棷 +棸 +棹 +棺 +棻 +棼 +棽 +椀 +椁 +椄 +椅 +椆 +椇 +椈 +椉 +椋 +椌 +植 +椎 +椏 +椐 +椑 +椒 +椓 +椔 +椗 +椙 +検 +椟 +椠 +椤 +椥 +椪 +椭 +椰 +椲 +椳 +椴 +椵 +椶 +椸 +椹 +椽 +椿 +楀 +楂 +楄 +楅 +楈 +楉 +楊 +楎 +楒 +楓 +楔 +楕 +楖 +楗 +楘 +楙 +楚 +楛 +楝 +楞 +楟 +楠 +楡 +楢 +楣 +楤 +楥 +楦 +楧 +楨 +楩 +楪 +楫 +楬 +業 +楮 +楯 +楰 +楱 +楳 +極 +楶 +楷 +楸 +楹 +楺 +楼 +楽 +楿 +概 +榃 +榄 +榅 +榆 +榇 +榈 +榉 +榊 +榍 +榎 +榑 +榔 +榕 +榖 +榗 +榘 +榙 +榛 +榜 +榞 +榠 +榢 +榣 +榤 +榦 +榧 +榨 +榩 +榪 +榫 +榬 +榭 +榮 +榯 +榰 +榱 +榲 +榴 +榶 +榷 +榹 +榻 +榼 +榽 +榾 +榿 +槀 +槁 +槃 +槄 +槇 +槉 +槊 +構 +槌 +槍 +槎 +槐 +槑 +槓 +槔 +槕 +槗 +様 +槙 +槚 +槛 +槜 +槟 +槠 +槢 +槤 +槥 +槧 +槨 +槩 +槬 +槭 +槮 +槰 +槱 +槲 +槳 +槷 +槸 +槺 +槻 +槼 +槽 +槾 +槿 +樀 +樁 +樂 +樅 +樆 +樊 +樋 +樑 +樓 +樔 +樕 +樗 +樘 +標 +樛 +樝 +樞 +樟 +樠 +模 +樣 +樧 +樨 +権 +横 +樫 +樯 +樱 +樲 +樴 +樵 +樸 +樹 +樺 +樻 +樽 +樾 +樿 +橀 +橁 +橄 +橇 +橈 +橉 +橋 +橐 +橑 +橒 +橓 +橘 +橙 +橚 +橛 +橜 +橝 +橞 +機 +橡 +橢 +橤 +橥 +橦 +橧 +橨 +橪 +橫 +橭 +橱 +橶 +橹 +橼 +橾 +橿 +檀 +檁 +檃 +檄 +檇 +檉 +檊 +檍 +檎 +檐 +檑 +檓 +檔 +檕 +檖 +檗 +檛 +檜 +檝 +檞 +檟 +檠 +檡 +檢 +檣 +檥 +檦 +檨 +檩 +檫 +檬 +檮 +檯 +檳 +檵 +檸 +檹 +檻 +檽 +櫂 +櫃 +櫅 +櫆 +櫈 +櫋 +櫌 +櫐 +櫑 +櫓 +櫙 +櫚 +櫛 +櫜 +櫝 +櫞 +櫟 +櫠 +櫡 +櫥 +櫧 +櫨 +櫪 +櫫 +櫬 +櫰 +櫱 +櫳 +櫸 +櫹 +櫺 +櫻 +櫼 +櫾 +櫿 +欂 +欃 +欄 +欅 +欈 +欉 +權 +欋 +欏 +欐 +欑 +欒 +欖 +欘 +欞 +欠 +次 +欢 +欣 +欤 +欥 +欧 +欨 +欬 +欭 +欯 +欱 +欲 +欳 +欴 +欵 +欶 +欷 +欸 +欹 +欺 +欻 +欽 +款 +欿 +歂 +歃 +歅 +歆 +歇 +歈 +歉 +歊 +歋 +歌 +歍 +歎 +歐 +歓 +歔 +歕 +歙 +歛 +歜 +歟 +歠 +歡 +止 +正 +此 +步 +武 +歧 +歩 +歪 +歭 +歯 +歲 +歳 +歴 +歶 +歷 +歸 +歹 +死 +歼 +歾 +歿 +殀 +殁 +殂 +殃 +殄 +殆 +殇 +殈 +殉 +殊 +残 +殍 +殏 +殑 +殒 +殓 +殔 +殖 +殗 +殘 +殙 +殚 +殛 +殞 +殟 +殠 +殡 +殢 +殣 +殤 +殥 +殦 +殧 +殪 +殫 +殭 +殮 +殯 +殰 +殲 +殳 +殴 +段 +殶 +殷 +殺 +殻 +殼 +殽 +殿 +毀 +毁 +毂 +毃 +毄 +毅 +毆 +毇 +毈 +毉 +毊 +毋 +毌 +母 +毎 +每 +毐 +毒 +毓 +比 +毕 +毖 +毗 +毘 +毙 +毚 +毛 +毞 +毡 +毣 +毤 +毦 +毨 +毪 +毫 +毬 +毯 +毰 +毲 +毳 +毴 +毵 +毸 +毹 +毻 +毼 +毽 +毾 +毿 +氀 +氁 +氂 +氄 +氅 +氆 +氇 +氈 +氊 +氌 +氍 +氏 +氐 +民 +氓 +气 +氕 +氖 +気 +氘 +氙 +氚 +氛 +氟 +氠 +氡 +氢 +氣 +氤 +氦 +氧 +氨 +氩 +氪 +氫 +氬 +氮 +氯 +氰 +氲 +氳 +水 +氶 +氷 +永 +氹 +氻 +氽 +氾 +氿 +汀 +汁 +求 +汃 +汆 +汇 +汈 +汉 +汊 +汋 +汍 +汎 +汏 +汐 +汒 +汔 +汕 +汗 +汙 +汚 +汛 +汜 +汝 +汞 +江 +池 +污 +汤 +汦 +汧 +汨 +汩 +汪 +汫 +汭 +汯 +汰 +汱 +汲 +汳 +汴 +汶 +汸 +汹 +決 +汽 +汾 +沁 +沂 +沃 +沄 +沅 +沆 +沇 +沈 +沉 +沋 +沌 +沍 +沏 +沐 +沒 +沓 +沔 +沕 +沖 +沘 +沙 +沚 +沛 +沜 +沟 +没 +沢 +沣 +沤 +沥 +沦 +沧 +沨 +沩 +沪 +沫 +沬 +沭 +沮 +沯 +沱 +河 +沴 +沶 +沷 +沸 +油 +沺 +治 +沼 +沽 +沾 +沿 +況 +泂 +泃 +泄 +泅 +泆 +泇 +泉 +泊 +泌 +泐 +泒 +泓 +泔 +法 +泖 +泗 +泙 +泚 +泛 +泜 +泝 +泞 +泠 +泡 +波 +泣 +泥 +泧 +注 +泩 +泪 +泫 +泬 +泭 +泮 +泯 +泰 +泱 +泲 +泳 +泵 +泷 +泸 +泺 +泻 +泼 +泽 +泾 +洀 +洁 +洄 +洇 +洈 +洊 +洋 +洌 +洍 +洎 +洑 +洒 +洓 +洗 +洘 +洙 +洚 +洛 +洞 +洟 +洢 +洣 +洤 +津 +洧 +洨 +洩 +洪 +洫 +洭 +洮 +洱 +洲 +洳 +洴 +洵 +洶 +洸 +洹 +洺 +活 +洼 +洽 +派 +洿 +流 +浃 +浄 +浅 +浆 +浇 +浈 +浉 +浊 +测 +浍 +济 +浏 +浐 +浑 +浒 +浓 +浔 +浕 +浘 +浙 +浚 +浛 +浜 +浞 +浟 +浠 +浡 +浢 +浣 +浤 +浥 +浦 +浧 +浩 +浪 +浬 +浭 +浮 +浯 +浰 +浲 +浴 +浵 +浶 +海 +浸 +浹 +浺 +浼 +浿 +涂 +涄 +涅 +涆 +涇 +消 +涉 +涊 +涌 +涍 +涎 +涐 +涑 +涒 +涓 +涔 +涕 +涖 +涗 +涘 +涙 +涛 +涝 +涞 +涟 +涠 +涡 +涢 +涣 +涤 +润 +涧 +涨 +涩 +涪 +涫 +涬 +涮 +涯 +液 +涳 +涴 +涵 +涷 +涸 +涼 +涽 +涾 +涿 +淀 +淄 +淅 +淆 +淇 +淈 +淊 +淋 +淌 +淍 +淎 +淏 +淑 +淒 +淓 +淔 +淖 +淘 +淙 +淚 +淛 +淜 +淝 +淞 +淟 +淠 +淡 +淢 +淤 +淥 +淦 +淨 +淩 +淪 +淫 +淬 +淭 +淮 +淯 +淰 +深 +淳 +淴 +淵 +淶 +混 +淸 +淹 +淺 +添 +淼 +淽 +渀 +渃 +清 +渇 +済 +渉 +渊 +渋 +渌 +渍 +渎 +渐 +渑 +渓 +渔 +渕 +渗 +渙 +渚 +減 +渜 +渝 +渟 +渠 +渡 +渢 +渣 +渤 +渥 +渦 +渨 +温 +渫 +測 +渭 +渮 +港 +渰 +渱 +渲 +渳 +渴 +游 +渹 +渺 +渻 +渼 +渽 +渾 +渿 +湀 +湁 +湃 +湄 +湅 +湆 +湇 +湉 +湊 +湋 +湍 +湎 +湑 +湓 +湔 +湖 +湘 +湛 +湜 +湝 +湞 +湟 +湠 +湡 +湢 +湣 +湥 +湧 +湨 +湩 +湫 +湮 +湯 +湱 +湲 +湳 +湴 +湻 +湼 +湾 +湿 +満 +溁 +溃 +溅 +溆 +溇 +溈 +溉 +溋 +溍 +溎 +溏 +源 +溓 +溔 +準 +溘 +溙 +溚 +溛 +溜 +溝 +溞 +溟 +溠 +溢 +溥 +溦 +溧 +溪 +溫 +溮 +溯 +溰 +溱 +溲 +溳 +溴 +溵 +溶 +溷 +溹 +溺 +溻 +溼 +溽 +溾 +滀 +滁 +滂 +滃 +滄 +滅 +滆 +滇 +滈 +滉 +滋 +滌 +滍 +滎 +滏 +滑 +滒 +滓 +滔 +滕 +滖 +滗 +滘 +滙 +滚 +滛 +滜 +滝 +滞 +滟 +滠 +满 +滢 +滤 +滥 +滦 +滧 +滨 +滩 +滪 +滫 +滬 +滭 +滮 +滯 +滱 +滲 +滴 +滵 +滷 +滸 +滹 +滻 +滽 +滾 +滿 +漁 +漂 +漃 +漅 +漆 +漇 +漈 +漉 +漊 +漋 +漎 +漏 +漑 +漒 +漓 +演 +漕 +漖 +漘 +漙 +漚 +漠 +漢 +漣 +漤 +漥 +漦 +漧 +漩 +漪 +漫 +漬 +漭 +漮 +漯 +漰 +漱 +漲 +漳 +漴 +漵 +漶 +漷 +漸 +漹 +漻 +漼 +漾 +漿 +潀 +潁 +潃 +潄 +潅 +潆 +潇 +潋 +潍 +潎 +潏 +潐 +潑 +潒 +潔 +潕 +潖 +潗 +潘 +潙 +潚 +潛 +潜 +潝 +潞 +潟 +潠 +潢 +潤 +潦 +潩 +潬 +潭 +潮 +潯 +潰 +潲 +潳 +潴 +潵 +潶 +潷 +潸 +潺 +潼 +潽 +潾 +潿 +澀 +澁 +澂 +澄 +澅 +澆 +澇 +澈 +澉 +澋 +澌 +澍 +澎 +澐 +澒 +澓 +澔 +澖 +澗 +澛 +澜 +澞 +澠 +澡 +澣 +澤 +澥 +澦 +澧 +澨 +澩 +澪 +澫 +澭 +澮 +澯 +澱 +澳 +澴 +澶 +澹 +澻 +澼 +澽 +激 +濁 +濂 +濃 +濄 +濆 +濇 +濈 +濉 +濊 +濋 +濌 +濎 +濑 +濒 +濔 +濕 +濘 +濙 +濛 +濜 +濞 +濟 +濠 +濡 +濣 +濤 +濦 +濧 +濩 +濫 +濬 +濭 +濮 +濯 +濰 +濱 +濲 +濴 +濶 +濺 +濻 +濼 +濾 +濿 +瀀 +瀁 +瀄 +瀅 +瀆 +瀇 +瀉 +瀋 +瀌 +瀍 +瀎 +瀏 +瀑 +瀔 +瀕 +瀖 +瀘 +瀙 +瀚 +瀛 +瀝 +瀞 +瀟 +瀠 +瀡 +瀢 +瀣 +瀦 +瀧 +瀨 +瀩 +瀫 +瀬 +瀯 +瀰 +瀱 +瀲 +瀴 +瀵 +瀶 +瀷 +瀸 +瀹 +瀺 +瀼 +瀾 +瀿 +灂 +灃 +灄 +灈 +灉 +灊 +灋 +灌 +灏 +灑 +灕 +灖 +灗 +灘 +灛 +灝 +灞 +灟 +灡 +灣 +灤 +灧 +灨 +灩 +灪 +火 +灭 +灯 +灰 +灴 +灵 +灶 +灸 +灼 +災 +灾 +灿 +炀 +炁 +炅 +炆 +炉 +炊 +炌 +炎 +炒 +炔 +炕 +炖 +炘 +炙 +炜 +炝 +炟 +炣 +炤 +炫 +炬 +炭 +炮 +炯 +炰 +炱 +炲 +炳 +炷 +炸 +点 +為 +炻 +炼 +炽 +炾 +烀 +烁 +烂 +烃 +烈 +烉 +烊 +烋 +烏 +烑 +烒 +烓 +烔 +烖 +烘 +烙 +烛 +烜 +烝 +烟 +烠 +烤 +烦 +烧 +烨 +烩 +烫 +烬 +热 +烯 +烰 +烱 +烴 +烶 +烷 +烹 +烺 +烻 +烽 +焃 +焄 +焆 +焉 +焊 +焌 +焍 +焐 +焓 +焔 +焕 +焖 +焗 +焘 +焙 +焚 +焜 +焞 +焠 +無 +焣 +焦 +焮 +焯 +焰 +焱 +焴 +然 +焻 +焼 +焿 +煁 +煃 +煅 +煆 +煇 +煉 +煊 +煋 +煌 +煎 +煐 +煑 +煒 +煓 +煔 +煕 +煖 +煗 +煙 +煚 +煜 +煝 +煞 +煟 +煠 +煢 +煣 +煤 +煥 +煦 +照 +煨 +煩 +煬 +煮 +煲 +煳 +煴 +煵 +煶 +煸 +煺 +煽 +熀 +熂 +熄 +熅 +熇 +熈 +熉 +熊 +熏 +熐 +熒 +熔 +熖 +熗 +熘 +熙 +熚 +熛 +熜 +熟 +熠 +熤 +熥 +熨 +熬 +熯 +熰 +熱 +熲 +熳 +熵 +熸 +熹 +熺 +熻 +熼 +熾 +熿 +燀 +燁 +燂 +燃 +燄 +燅 +燈 +燉 +燊 +燋 +燎 +燏 +燐 +燒 +燔 +燕 +燖 +燗 +燘 +燙 +燚 +燜 +燝 +營 +燠 +燡 +燥 +燦 +燧 +燫 +燬 +燭 +燮 +燴 +燹 +燻 +燼 +燾 +燿 +爀 +爁 +爂 +爆 +爇 +爊 +爌 +爍 +爐 +爓 +爔 +爕 +爚 +爛 +爝 +爞 +爟 +爢 +爣 +爨 +爪 +爬 +爭 +爯 +爰 +爱 +爲 +爵 +父 +爷 +爸 +爹 +爺 +爻 +爼 +爽 +爾 +爿 +牀 +牁 +牂 +牄 +牆 +片 +版 +牉 +牋 +牌 +牍 +牎 +牏 +牒 +牓 +牕 +牖 +牘 +牙 +牚 +牛 +牝 +牟 +牠 +牡 +牢 +牣 +牤 +牥 +牦 +牧 +物 +牬 +牮 +牯 +牰 +牲 +牴 +牵 +牷 +牸 +特 +牺 +牻 +牼 +牽 +牾 +牿 +犀 +犁 +犂 +犄 +犅 +犆 +犇 +犈 +犉 +犊 +犋 +犌 +犍 +犎 +犏 +犐 +犑 +犒 +犓 +犕 +犖 +犗 +犘 +犚 +犛 +犝 +犞 +犟 +犠 +犢 +犣 +犤 +犥 +犦 +犧 +犨 +犩 +犪 +犬 +犮 +犯 +犰 +犴 +犵 +状 +犷 +犸 +犹 +犽 +犿 +狀 +狁 +狂 +狃 +狄 +狆 +狈 +狉 +狊 +狋 +狌 +狍 +狎 +狐 +狑 +狒 +狓 +狔 +狖 +狗 +狘 +狙 +狚 +狛 +狜 +狝 +狞 +狟 +狠 +狡 +狣 +狤 +狥 +狦 +狨 +狩 +狪 +狫 +独 +狭 +狮 +狯 +狰 +狱 +狲 +狳 +狴 +狶 +狷 +狸 +狹 +狺 +狻 +狼 +狽 +狾 +狿 +猀 +猁 +猂 +猃 +猄 +猇 +猈 +猊 +猋 +猎 +猏 +猑 +猒 +猓 +猕 +猖 +猗 +猘 +猙 +猛 +猜 +猝 +猞 +猟 +猡 +猢 +猣 +猥 +猦 +猧 +猨 +猩 +猪 +猫 +猬 +猭 +献 +猯 +猰 +猱 +猲 +猳 +猴 +猵 +猶 +猷 +猹 +猺 +猻 +猼 +猾 +猿 +獀 +獁 +獂 +獃 +獄 +獅 +獇 +獊 +獋 +獌 +獍 +獎 +獏 +獐 +獑 +獒 +獗 +獘 +獛 +獝 +獞 +獟 +獠 +獡 +獢 +獣 +獥 +獦 +獧 +獨 +獩 +獪 +獫 +獬 +獭 +獮 +獯 +獰 +獲 +獳 +獴 +獵 +獶 +獷 +獸 +獺 +獻 +獼 +獽 +獾 +獿 +玀 +玁 +玂 +玃 +玄 +玅 +玆 +率 +玈 +玉 +玊 +王 +玎 +玏 +玑 +玒 +玓 +玔 +玕 +玖 +玗 +玘 +玙 +玚 +玛 +玞 +玟 +玠 +玡 +玢 +玤 +玥 +玦 +玧 +玨 +玩 +玫 +玭 +玮 +环 +现 +玱 +玲 +玳 +玶 +玷 +玹 +玺 +玻 +玼 +玾 +玿 +珀 +珂 +珅 +珇 +珈 +珉 +珊 +珋 +珌 +珍 +珎 +珏 +珐 +珑 +珒 +珓 +珕 +珖 +珙 +珛 +珝 +珞 +珠 +珡 +珢 +珣 +珤 +珥 +珦 +珧 +珩 +珪 +珫 +班 +珮 +珰 +珲 +珵 +珶 +珷 +珸 +珹 +珺 +珽 +現 +琀 +琁 +球 +琄 +琅 +理 +琇 +琈 +琉 +琊 +琍 +琎 +琏 +琐 +琔 +琖 +琚 +琛 +琟 +琡 +琢 +琤 +琥 +琦 +琨 +琪 +琫 +琬 +琭 +琮 +琯 +琰 +琱 +琲 +琳 +琴 +琵 +琶 +琹 +琺 +琼 +琿 +瑀 +瑁 +瑂 +瑃 +瑄 +瑅 +瑆 +瑇 +瑈 +瑊 +瑋 +瑑 +瑒 +瑓 +瑔 +瑕 +瑖 +瑗 +瑙 +瑚 +瑛 +瑜 +瑝 +瑞 +瑟 +瑠 +瑢 +瑣 +瑤 +瑥 +瑧 +瑨 +瑩 +瑪 +瑬 +瑭 +瑯 +瑰 +瑱 +瑲 +瑳 +瑴 +瑵 +瑶 +瑷 +瑺 +瑽 +瑾 +瑿 +璀 +璁 +璃 +璄 +璅 +璆 +璇 +璈 +璉 +璊 +璋 +璌 +璎 +璐 +璒 +璕 +璗 +璘 +璙 +璚 +璜 +璞 +璟 +璠 +璡 +璢 +璣 +璥 +璦 +璧 +璨 +璩 +璪 +璫 +璬 +璮 +環 +璱 +璲 +璵 +璸 +璹 +璺 +璽 +璿 +瓀 +瓁 +瓅 +瓈 +瓊 +瓋 +瓌 +瓏 +瓑 +瓒 +瓔 +瓖 +瓘 +瓚 +瓛 +瓜 +瓝 +瓞 +瓟 +瓠 +瓡 +瓢 +瓣 +瓤 +瓥 +瓦 +瓨 +瓩 +瓬 +瓮 +瓯 +瓴 +瓵 +瓶 +瓷 +瓻 +瓽 +瓾 +瓿 +甀 +甂 +甃 +甄 +甈 +甋 +甌 +甍 +甏 +甐 +甑 +甒 +甓 +甔 +甕 +甖 +甗 +甘 +甙 +甚 +甜 +甝 +甞 +生 +甡 +產 +産 +甥 +甦 +用 +甩 +甪 +甫 +甬 +甭 +甮 +甯 +田 +由 +甲 +申 +电 +男 +甸 +甹 +町 +画 +甽 +甾 +甿 +畀 +畅 +畇 +畈 +畊 +畋 +界 +畎 +畏 +畐 +畑 +畔 +畖 +留 +畚 +畛 +畜 +畝 +畟 +畠 +畢 +畣 +畤 +略 +畦 +畧 +番 +畫 +畬 +畯 +異 +畱 +畲 +畳 +畴 +畵 +當 +畷 +畸 +畹 +畺 +畽 +畿 +疀 +疁 +疃 +疆 +疇 +疊 +疋 +疌 +疍 +疎 +疏 +疐 +疑 +疒 +疔 +疕 +疖 +疗 +疘 +疙 +疚 +疝 +疟 +疠 +疡 +疢 +疣 +疤 +疥 +疧 +疫 +疬 +疭 +疮 +疯 +疰 +疱 +疲 +疳 +疴 +疵 +疸 +疹 +疻 +疼 +疽 +疾 +疿 +痀 +痁 +痂 +痃 +痄 +病 +症 +痈 +痉 +痊 +痋 +痌 +痍 +痎 +痏 +痐 +痑 +痒 +痓 +痔 +痕 +痗 +痘 +痙 +痚 +痛 +痝 +痞 +痟 +痠 +痡 +痢 +痣 +痤 +痦 +痧 +痨 +痩 +痪 +痫 +痯 +痰 +痱 +痲 +痳 +痴 +痷 +痸 +痹 +痺 +痻 +痼 +痾 +痿 +瘀 +瘁 +瘃 +瘅 +瘆 +瘈 +瘉 +瘊 +瘋 +瘌 +瘍 +瘏 +瘐 +瘑 +瘓 +瘕 +瘖 +瘗 +瘘 +瘙 +瘛 +瘜 +瘝 +瘞 +瘟 +瘠 +瘡 +瘢 +瘣 +瘤 +瘥 +瘦 +瘧 +瘩 +瘪 +瘫 +瘭 +瘮 +瘯 +瘰 +瘱 +瘲 +瘳 +瘴 +瘵 +瘸 +瘺 +瘻 +瘼 +瘽 +瘾 +瘿 +癀 +療 +癃 +癄 +癅 +癆 +癇 +癈 +癉 +癌 +癍 +癐 +癒 +癓 +癔 +癖 +癗 +癘 +癙 +癜 +癞 +癟 +癠 +癡 +癢 +癣 +癤 +癥 +癧 +癩 +癪 +癫 +癬 +癭 +癮 +癯 +癰 +癱 +癲 +癵 +癸 +癹 +発 +登 +發 +白 +百 +癿 +皁 +皂 +的 +皆 +皇 +皈 +皊 +皋 +皎 +皏 +皐 +皑 +皓 +皕 +皖 +皙 +皚 +皛 +皜 +皝 +皞 +皤 +皦 +皫 +皭 +皮 +皯 +皰 +皱 +皲 +皴 +皵 +皷 +皸 +皺 +皻 +皽 +皾 +皿 +盂 +盃 +盄 +盅 +盆 +盇 +盈 +盉 +益 +盋 +盌 +盍 +盎 +盏 +盐 +监 +盒 +盓 +盔 +盖 +盗 +盘 +盛 +盜 +盝 +盞 +盟 +盡 +監 +盤 +盥 +盦 +盧 +盨 +盩 +盪 +盫 +盬 +盭 +目 +盯 +盱 +盲 +盳 +直 +盷 +相 +盹 +盺 +盻 +盼 +盾 +眀 +省 +眃 +眄 +眅 +眇 +眈 +眉 +眊 +看 +県 +眍 +眐 +眑 +眒 +眓 +眕 +眙 +眚 +眛 +眜 +眝 +眞 +真 +眠 +眢 +眣 +眥 +眦 +眨 +眩 +眬 +眭 +眯 +眱 +眲 +眳 +眴 +眵 +眶 +眷 +眸 +眹 +眺 +眼 +眽 +眾 +着 +睁 +睃 +睄 +睅 +睆 +睇 +睊 +睋 +睌 +睍 +睎 +睏 +睐 +睑 +睒 +睔 +睕 +睖 +睚 +睛 +睜 +睞 +睟 +睠 +睡 +睢 +督 +睥 +睦 +睧 +睨 +睩 +睪 +睫 +睬 +睭 +睮 +睯 +睹 +睺 +睼 +睽 +睾 +睿 +瞀 +瞁 +瞂 +瞄 +瞅 +瞇 +瞉 +瞋 +瞌 +瞍 +瞎 +瞏 +瞑 +瞒 +瞓 +瞖 +瞘 +瞚 +瞛 +瞜 +瞝 +瞞 +瞟 +瞠 +瞡 +瞢 +瞥 +瞧 +瞩 +瞪 +瞫 +瞬 +瞭 +瞰 +瞲 +瞳 +瞴 +瞵 +瞶 +瞷 +瞻 +瞼 +瞽 +瞿 +矁 +矂 +矇 +矉 +矊 +矌 +矍 +矎 +矏 +矐 +矓 +矔 +矕 +矗 +矘 +矙 +矚 +矛 +矜 +矞 +矠 +矢 +矣 +知 +矧 +矩 +矫 +矬 +短 +矮 +矯 +矰 +矱 +矲 +石 +矴 +矶 +矸 +矹 +矺 +矻 +矼 +矽 +矾 +矿 +砀 +码 +砂 +砄 +砅 +砆 +砉 +砋 +砌 +砍 +砎 +砏 +砐 +砑 +砒 +研 +砕 +砖 +砗 +砘 +砚 +砜 +砝 +砟 +砠 +砢 +砣 +砥 +砦 +砧 +砨 +砩 +砫 +砬 +砭 +砮 +砯 +砰 +砲 +砳 +破 +砵 +砷 +砸 +砹 +砺 +砻 +砼 +砾 +础 +硁 +硂 +硃 +硅 +硇 +硈 +硉 +硊 +硌 +硍 +硎 +硏 +硐 +硒 +硓 +硔 +硕 +硖 +硗 +硙 +硚 +硜 +硝 +硠 +硤 +硥 +硨 +硩 +硪 +硫 +硬 +硭 +确 +硯 +硰 +硱 +硼 +硾 +硿 +碁 +碃 +碄 +碅 +碆 +碇 +碈 +碉 +碌 +碍 +碎 +碏 +碑 +碓 +碔 +碕 +碗 +碘 +碚 +碛 +碜 +碞 +碟 +碡 +碣 +碥 +碧 +碨 +碩 +碪 +碫 +碭 +碰 +碱 +碲 +碳 +碴 +碶 +碸 +碹 +確 +碻 +碼 +碽 +碾 +磁 +磃 +磅 +磈 +磉 +磊 +磋 +磌 +磍 +磎 +磏 +磐 +磑 +磔 +磕 +磘 +磙 +磚 +磛 +磜 +磝 +磞 +磟 +磡 +磣 +磥 +磧 +磨 +磩 +磪 +磬 +磯 +磱 +磲 +磳 +磴 +磵 +磷 +磹 +磺 +磻 +磼 +磽 +磾 +磿 +礁 +礂 +礄 +礅 +礉 +礌 +礎 +礐 +礑 +礒 +礓 +礔 +礙 +礛 +礜 +礝 +礞 +礠 +礣 +礥 +礦 +礧 +礨 +礪 +礫 +礬 +礭 +礮 +礱 +礴 +礵 +示 +礼 +礽 +社 +礿 +祀 +祁 +祂 +祃 +祅 +祆 +祇 +祈 +祉 +祊 +祋 +祌 +祎 +祏 +祐 +祑 +祒 +祓 +祔 +祕 +祖 +祗 +祙 +祚 +祛 +祜 +祝 +神 +祟 +祠 +祡 +祢 +祣 +祤 +祥 +祧 +票 +祩 +祪 +祫 +祭 +祯 +祲 +祳 +祴 +祷 +祸 +祹 +祺 +祼 +祾 +祿 +禀 +禁 +禂 +禃 +禄 +禅 +禇 +禊 +禋 +禍 +禎 +福 +禑 +禒 +禓 +禔 +禕 +禖 +禗 +禘 +禚 +禛 +禜 +禟 +禠 +禡 +禤 +禦 +禧 +禨 +禩 +禪 +禫 +禬 +禭 +禮 +禰 +禱 +禳 +禴 +禵 +禷 +禸 +禹 +禺 +离 +禼 +禽 +禾 +禿 +秀 +私 +秃 +秅 +秆 +秈 +秉 +秊 +秋 +种 +秎 +秏 +科 +秒 +秔 +秕 +秖 +秘 +租 +秠 +秣 +秤 +秦 +秧 +秩 +秪 +秫 +秬 +秭 +秮 +积 +称 +秳 +秶 +秸 +秺 +移 +秽 +秾 +稀 +稂 +稃 +稅 +稆 +稈 +稉 +稊 +程 +稌 +稍 +税 +稑 +稒 +稔 +稗 +稘 +稙 +稚 +稜 +稞 +稟 +稠 +稣 +稫 +稬 +稭 +種 +稯 +稰 +稱 +稲 +稳 +稷 +稹 +稺 +稻 +稼 +稽 +稾 +稿 +穀 +穂 +穄 +穅 +穆 +穇 +穈 +穉 +穊 +穋 +穌 +積 +穎 +穏 +穑 +穖 +穗 +穙 +穛 +穜 +穟 +穠 +穡 +穢 +穣 +穤 +穧 +穨 +穩 +穫 +穬 +穭 +穮 +穰 +穱 +穴 +穵 +究 +穷 +穸 +穹 +空 +穽 +穾 +穿 +窀 +突 +窃 +窄 +窅 +窆 +窈 +窉 +窊 +窋 +窌 +窍 +窎 +窏 +窐 +窑 +窒 +窓 +窔 +窕 +窖 +窗 +窘 +窙 +窜 +窝 +窞 +窟 +窠 +窢 +窣 +窥 +窦 +窨 +窩 +窪 +窫 +窬 +窭 +窮 +窯 +窰 +窱 +窲 +窳 +窴 +窵 +窶 +窸 +窺 +窻 +窾 +窿 +竀 +竁 +竃 +竄 +竅 +竇 +竈 +竊 +立 +竑 +竖 +竘 +站 +竚 +竜 +竝 +竞 +竟 +章 +竢 +竣 +童 +竦 +竩 +竪 +竫 +竭 +端 +竴 +競 +竷 +竹 +竺 +竻 +竽 +竿 +笃 +笄 +笅 +笆 +笈 +笊 +笋 +笏 +笐 +笑 +笓 +笔 +笕 +笘 +笙 +笛 +笝 +笞 +笠 +笢 +笤 +笥 +符 +笨 +笩 +笪 +笫 +第 +笭 +笮 +笯 +笰 +笱 +笲 +笳 +笴 +笵 +笸 +笹 +笺 +笻 +笼 +笾 +筀 +筄 +筅 +筆 +筇 +筈 +等 +筊 +筋 +筌 +筍 +筏 +筐 +筑 +筒 +答 +策 +筘 +筚 +筛 +筜 +筝 +筞 +筠 +筡 +筢 +筤 +筥 +筦 +筧 +筩 +筬 +筭 +筮 +筯 +筰 +筱 +筲 +筳 +筴 +筵 +筶 +筷 +筹 +筻 +筼 +签 +简 +箄 +箅 +箆 +箇 +箈 +箊 +箋 +箌 +箍 +箎 +箏 +箐 +箑 +箒 +箓 +箔 +箕 +箖 +算 +箘 +箙 +箛 +箜 +箝 +箠 +管 +箢 +箦 +箧 +箨 +箩 +箪 +箫 +箬 +箭 +箯 +箱 +箴 +箷 +箸 +箹 +箾 +節 +篁 +範 +篆 +篇 +築 +篊 +篋 +篌 +篎 +篑 +篓 +篔 +篕 +篙 +篚 +篛 +篝 +篞 +篠 +篡 +篣 +篤 +篥 +篦 +篧 +篨 +篩 +篪 +篭 +篮 +篯 +篱 +篲 +篳 +篴 +篷 +篸 +篹 +篻 +篼 +篽 +篾 +篿 +簀 +簁 +簂 +簃 +簅 +簇 +簉 +簋 +簌 +簍 +簎 +簏 +簑 +簒 +簕 +簖 +簗 +簙 +簜 +簝 +簞 +簟 +簠 +簡 +簢 +簣 +簥 +簦 +簧 +簨 +簩 +簪 +簫 +簬 +簭 +簮 +簰 +簳 +簷 +簸 +簹 +簺 +簻 +簼 +簽 +簾 +簿 +籀 +籁 +籃 +籈 +籉 +籊 +籌 +籍 +籐 +籔 +籗 +籙 +籛 +籜 +籝 +籟 +籠 +籣 +籤 +籥 +籦 +籧 +籩 +籪 +籬 +籮 +籯 +籲 +米 +籴 +籸 +籹 +籺 +类 +籼 +籽 +籾 +粂 +粃 +粄 +粇 +粉 +粊 +粋 +粍 +粑 +粒 +粔 +粕 +粗 +粘 +粛 +粜 +粝 +粞 +粟 +粢 +粤 +粥 +粦 +粧 +粩 +粪 +粮 +粱 +粲 +粳 +粵 +粹 +粺 +粻 +粼 +粽 +精 +粿 +糀 +糁 +糅 +糇 +糈 +糉 +糊 +糌 +糍 +糎 +糒 +糔 +糕 +糖 +糗 +糙 +糜 +糝 +糞 +糟 +糠 +糢 +糧 +糨 +糪 +糬 +糯 +糰 +糱 +糲 +糴 +糵 +糶 +糷 +糸 +糹 +糺 +系 +糾 +紀 +紂 +紃 +約 +紅 +紆 +紇 +紈 +紉 +紊 +紋 +納 +紎 +紐 +紑 +紒 +紓 +純 +紕 +紖 +紗 +紘 +紙 +級 +紛 +紜 +紝 +紞 +紟 +素 +紡 +索 +紥 +紧 +紩 +紫 +紬 +紮 +累 +細 +紱 +紲 +紳 +紵 +紶 +紸 +紹 +紺 +紼 +紽 +紾 +紿 +絀 +絁 +終 +絃 +組 +絅 +絆 +絇 +経 +絎 +絏 +結 +絓 +絕 +絖 +絘 +絛 +絜 +絝 +絞 +絡 +絢 +絣 +給 +絧 +絨 +絪 +絫 +絭 +絮 +絯 +絰 +統 +絲 +絳 +絵 +絶 +絷 +絹 +絺 +絻 +絼 +絽 +絿 +綀 +綁 +綃 +綄 +綅 +綆 +綈 +綉 +綌 +綍 +綎 +綏 +綑 +經 +綔 +綖 +継 +続 +綜 +綝 +綞 +綟 +綠 +綢 +綣 +綦 +綧 +綪 +綫 +綬 +維 +綮 +綯 +綰 +綱 +網 +綳 +綴 +綵 +綷 +綸 +綹 +綺 +綻 +綼 +綽 +綾 +綿 +緀 +緁 +緂 +緃 +緄 +緅 +緆 +緇 +緈 +緊 +緋 +緌 +緎 +総 +緐 +緑 +緒 +緔 +緖 +緗 +緘 +緙 +線 +緛 +緜 +緝 +緞 +締 +緡 +緣 +緤 +緥 +緦 +緧 +編 +緩 +緪 +緬 +緯 +緰 +緱 +緲 +緳 +練 +緵 +緶 +緷 +緹 +緺 +緻 +縁 +縂 +縃 +縄 +縅 +縈 +縉 +縊 +縋 +縌 +縎 +縏 +縐 +縑 +縒 +縓 +縕 +縗 +縚 +縛 +縜 +縝 +縞 +縟 +縠 +縡 +縢 +縣 +縤 +縦 +縧 +縩 +縪 +縫 +縭 +縮 +縯 +縰 +縱 +縲 +縳 +縴 +縵 +縶 +縷 +縸 +縹 +縻 +縼 +總 +績 +縿 +繀 +繁 +繂 +繃 +繄 +繅 +繆 +繇 +繈 +繉 +繊 +繋 +繍 +繐 +繑 +繒 +織 +繕 +繖 +繘 +繙 +繚 +繜 +繝 +繞 +繟 +繠 +繡 +繢 +繣 +繦 +繧 +繩 +繪 +繫 +繭 +繮 +繯 +繰 +繲 +繳 +繴 +繵 +繶 +繷 +繸 +繹 +繺 +繻 +繼 +繽 +繾 +纀 +纁 +纂 +纆 +纇 +纈 +纊 +纋 +續 +纍 +纏 +纐 +纑 +纒 +纓 +纔 +纕 +纖 +纗 +纘 +纚 +纛 +纜 +纠 +纡 +红 +纣 +纤 +纥 +约 +级 +纨 +纩 +纪 +纫 +纬 +纭 +纮 +纯 +纰 +纱 +纲 +纳 +纴 +纵 +纶 +纷 +纸 +纹 +纺 +纻 +纼 +纽 +纾 +线 +绀 +绁 +绂 +练 +组 +绅 +细 +织 +终 +绉 +绊 +绋 +绌 +绍 +绎 +经 +绐 +绑 +绒 +结 +绔 +绕 +绖 +绗 +绘 +给 +绚 +绛 +络 +绝 +绞 +统 +绠 +绡 +绢 +绣 +绤 +绥 +绦 +继 +绨 +绩 +绪 +绫 +续 +绮 +绯 +绰 +绱 +绲 +绳 +维 +绵 +绶 +绷 +绸 +绹 +绺 +绻 +综 +绽 +绾 +绿 +缀 +缁 +缂 +缃 +缄 +缅 +缆 +缇 +缈 +缉 +缊 +缌 +缎 +缐 +缑 +缒 +缓 +缔 +缕 +编 +缗 +缘 +缙 +缚 +缛 +缜 +缝 +缞 +缟 +缠 +缡 +缢 +缣 +缤 +缥 +缦 +缧 +缨 +缩 +缪 +缫 +缬 +缭 +缮 +缯 +缰 +缱 +缲 +缳 +缴 +缵 +缶 +缸 +缹 +缺 +缽 +缾 +缿 +罂 +罃 +罄 +罅 +罇 +罈 +罉 +罊 +罋 +罌 +罍 +罎 +罏 +罐 +网 +罔 +罕 +罗 +罘 +罚 +罛 +罜 +罝 +罞 +罟 +罠 +罡 +罢 +罣 +罥 +罦 +罧 +罨 +罩 +罪 +罫 +罬 +罭 +置 +罰 +罱 +署 +罳 +罴 +罵 +罶 +罷 +罹 +罺 +罻 +罼 +罽 +罾 +罿 +羁 +羂 +羃 +羅 +羆 +羇 +羈 +羉 +羊 +羋 +羌 +羍 +美 +羑 +羒 +羓 +羔 +羕 +羖 +羗 +羙 +羚 +羛 +羜 +羝 +羞 +羟 +羠 +羡 +羢 +羣 +群 +羥 +羦 +羧 +羨 +義 +羬 +羭 +羯 +羰 +羱 +羲 +羳 +羴 +羵 +羶 +羷 +羸 +羹 +羺 +羼 +羽 +羾 +羿 +翀 +翁 +翂 +翃 +翄 +翅 +翇 +翈 +翊 +翋 +翌 +翍 +翎 +翏 +翐 +翑 +習 +翔 +翕 +翘 +翙 +翚 +翛 +翜 +翟 +翠 +翡 +翢 +翣 +翥 +翦 +翨 +翩 +翪 +翫 +翬 +翭 +翮 +翯 +翰 +翱 +翲 +翳 +翴 +翷 +翹 +翺 +翻 +翼 +翽 +翾 +翿 +耀 +老 +考 +耄 +者 +耆 +耇 +耋 +而 +耍 +耎 +耏 +耐 +耑 +耒 +耔 +耕 +耖 +耗 +耘 +耙 +耜 +耞 +耟 +耠 +耡 +耢 +耤 +耥 +耦 +耧 +耨 +耩 +耪 +耬 +耮 +耰 +耱 +耳 +耴 +耵 +耶 +耷 +耸 +耹 +耻 +耽 +耾 +耿 +聂 +聃 +聆 +聇 +聈 +聊 +聋 +职 +聍 +聏 +聑 +聒 +联 +聖 +聘 +聚 +聝 +聞 +聟 +聡 +聨 +聩 +聪 +聯 +聰 +聱 +聲 +聳 +聴 +聵 +聶 +職 +聹 +聽 +聾 +聿 +肂 +肃 +肄 +肅 +肆 +肇 +肉 +肋 +肌 +肎 +肏 +肐 +肒 +肓 +肕 +肖 +肘 +肙 +肚 +肛 +肜 +肝 +肟 +肠 +股 +肢 +肣 +肤 +肥 +肧 +肩 +肪 +肫 +肭 +肮 +肯 +肱 +育 +肴 +肵 +肷 +肸 +肹 +肺 +肼 +肽 +肾 +肿 +胀 +胁 +胂 +胃 +胄 +胅 +胆 +胇 +胈 +胉 +胊 +背 +胍 +胎 +胏 +胐 +胑 +胔 +胕 +胖 +胗 +胘 +胙 +胚 +胛 +胜 +胝 +胞 +胠 +胡 +胣 +胤 +胥 +胧 +胨 +胩 +胪 +胫 +胬 +胭 +胯 +胰 +胱 +胲 +胳 +胴 +胵 +胶 +胷 +胸 +胹 +胺 +胻 +胼 +能 +胾 +脀 +脁 +脂 +脃 +脅 +脆 +脇 +脈 +脉 +脊 +脍 +脎 +脏 +脐 +脑 +脒 +脓 +脔 +脕 +脖 +脗 +脘 +脙 +脚 +脛 +脞 +脟 +脡 +脣 +脤 +脥 +脧 +脩 +脫 +脬 +脭 +脯 +脰 +脱 +脲 +脳 +脶 +脷 +脸 +脹 +脽 +脾 +脿 +腃 +腄 +腆 +腇 +腈 +腊 +腋 +腌 +腍 +腎 +腏 +腐 +腑 +腒 +腓 +腔 +腕 +腖 +腘 +腙 +腚 +腛 +腜 +腞 +腠 +腢 +腤 +腥 +腦 +腧 +腨 +腩 +腫 +腭 +腮 +腯 +腰 +腱 +腲 +腳 +腴 +腶 +腷 +腸 +腹 +腺 +腻 +腼 +腽 +腾 +腿 +膀 +膂 +膃 +膆 +膇 +膈 +膉 +膊 +膋 +膌 +膍 +膏 +膑 +膕 +膘 +膙 +膚 +膛 +膜 +膝 +膞 +膟 +膠 +膢 +膣 +膥 +膦 +膨 +膩 +膫 +膬 +膮 +膰 +膱 +膲 +膳 +膴 +膵 +膷 +膹 +膺 +膻 +膽 +膾 +膿 +臀 +臂 +臃 +臄 +臅 +臆 +臇 +臈 +臉 +臊 +臋 +臌 +臍 +臏 +臐 +臑 +臒 +臓 +臕 +臗 +臘 +臙 +臚 +臛 +臜 +臝 +臞 +臟 +臠 +臡 +臢 +臣 +臥 +臦 +臧 +臨 +臩 +自 +臬 +臭 +臮 +臯 +臲 +至 +致 +臷 +臸 +臺 +臻 +臼 +臾 +臿 +舀 +舁 +舂 +舄 +舅 +舆 +與 +興 +舉 +舊 +舋 +舌 +舍 +舎 +舐 +舑 +舒 +舔 +舕 +舖 +舗 +舘 +舛 +舜 +舝 +舞 +舟 +舠 +舡 +舢 +舣 +舥 +舨 +舩 +航 +舫 +般 +舭 +舯 +舰 +舱 +舲 +舳 +舴 +舵 +舶 +舷 +舸 +船 +舺 +舻 +舼 +舽 +舾 +艀 +艂 +艄 +艅 +艇 +艉 +艋 +艎 +艏 +艐 +艑 +艒 +艓 +艔 +艕 +艘 +艙 +艚 +艛 +艟 +艤 +艦 +艨 +艫 +艮 +良 +艰 +艱 +色 +艳 +艴 +艵 +艶 +艷 +艸 +艹 +艺 +艼 +艽 +艾 +艿 +芀 +节 +芃 +芄 +芅 +芈 +芊 +芋 +芍 +芎 +芏 +芐 +芑 +芒 +芓 +芔 +芗 +芘 +芙 +芚 +芛 +芜 +芝 +芞 +芟 +芠 +芡 +芣 +芤 +芥 +芦 +芧 +芨 +芩 +芪 +芫 +芬 +芭 +芮 +芯 +芰 +花 +芲 +芳 +芴 +芵 +芷 +芸 +芹 +芺 +芻 +芼 +芽 +芾 +芿 +苀 +苁 +苄 +苅 +苇 +苈 +苉 +苊 +苋 +苌 +苍 +苎 +苏 +苑 +苒 +苓 +苔 +苕 +苖 +苗 +苘 +苙 +苛 +苜 +苝 +苞 +苟 +苠 +苡 +苣 +苤 +若 +苦 +苧 +苨 +苪 +苫 +苬 +苯 +英 +苲 +苳 +苴 +苵 +苶 +苷 +苹 +苺 +苻 +苼 +苾 +茀 +茁 +茂 +范 +茄 +茅 +茆 +茇 +茈 +茉 +茋 +茌 +茍 +茎 +茏 +茑 +茓 +茔 +茕 +茖 +茗 +茘 +茙 +茚 +茛 +茜 +茝 +茠 +茢 +茤 +茥 +茦 +茧 +茨 +茩 +茪 +茫 +茬 +茭 +茮 +茯 +茱 +茲 +茳 +茴 +茵 +茶 +茷 +茸 +茹 +茺 +茻 +茼 +茽 +茿 +荀 +荁 +荂 +荃 +荄 +荅 +荆 +荇 +草 +荊 +荍 +荎 +荏 +荐 +荑 +荒 +荓 +荔 +荖 +荘 +荙 +荚 +荛 +荜 +荞 +荟 +荠 +荡 +荣 +荤 +荥 +荦 +荧 +荨 +荩 +荪 +荫 +荬 +荭 +荮 +药 +荳 +荴 +荵 +荷 +荸 +荺 +荻 +荼 +荽 +荾 +莁 +莃 +莅 +莆 +莉 +莊 +莋 +莌 +莍 +莎 +莏 +莐 +莒 +莓 +莔 +莕 +莖 +莘 +莙 +莛 +莜 +莝 +莞 +莠 +莢 +莣 +莤 +莥 +莧 +莨 +莩 +莪 +莫 +莬 +莰 +莱 +莲 +莳 +莴 +莵 +莶 +获 +莸 +莹 +莺 +莼 +莽 +莿 +菀 +菁 +菂 +菅 +菆 +菇 +菈 +菉 +菊 +菋 +菌 +菍 +菎 +菏 +菑 +菓 +菔 +菕 +菖 +菘 +菙 +菜 +菝 +菞 +菟 +菠 +菡 +菣 +菤 +菥 +菧 +菨 +菩 +菪 +菫 +華 +菰 +菱 +菲 +菳 +菴 +菵 +菶 +菸 +菹 +菺 +菼 +菽 +菾 +菿 +萁 +萃 +萄 +萆 +萇 +萉 +萊 +萋 +萌 +萍 +萎 +萏 +萐 +萑 +萒 +萘 +萚 +萜 +萝 +萠 +萡 +萣 +萤 +营 +萦 +萧 +萨 +萩 +萬 +萭 +萯 +萰 +萱 +萲 +萳 +萴 +萵 +萷 +萸 +萹 +萺 +萼 +落 +萿 +葀 +葂 +葃 +葅 +葆 +葉 +葊 +葋 +葌 +葍 +葎 +葑 +葒 +葖 +著 +葙 +葚 +葛 +葜 +葝 +葞 +葟 +葡 +董 +葤 +葥 +葦 +葧 +葩 +葫 +葬 +葭 +葯 +葰 +葱 +葳 +葴 +葵 +葶 +葷 +葸 +葹 +葺 +葽 +蒂 +蒄 +蒆 +蒇 +蒈 +蒉 +蒋 +蒌 +蒍 +蒎 +蒏 +蒐 +蒓 +蒔 +蒗 +蒘 +蒙 +蒚 +蒛 +蒜 +蒝 +蒞 +蒟 +蒠 +蒡 +蒢 +蒤 +蒧 +蒨 +蒩 +蒪 +蒫 +蒬 +蒭 +蒮 +蒯 +蒱 +蒲 +蒴 +蒶 +蒸 +蒹 +蒺 +蒻 +蒼 +蒽 +蒾 +蒿 +蓀 +蓁 +蓂 +蓄 +蓆 +蓇 +蓉 +蓊 +蓋 +蓌 +蓍 +蓎 +蓏 +蓐 +蓑 +蓓 +蓖 +蓘 +蓚 +蓝 +蓟 +蓠 +蓢 +蓣 +蓥 +蓦 +蓧 +蓨 +蓩 +蓪 +蓫 +蓬 +蓭 +蓮 +蓯 +蓰 +蓱 +蓲 +蓳 +蓴 +蓶 +蓷 +蓹 +蓺 +蓻 +蓼 +蓽 +蓾 +蓿 +蔀 +蔂 +蔃 +蔄 +蔆 +蔇 +蔈 +蔉 +蔊 +蔌 +蔍 +蔎 +蔏 +蔑 +蔒 +蔓 +蔔 +蔕 +蔖 +蔗 +蔘 +蔚 +蔜 +蔝 +蔞 +蔟 +蔠 +蔡 +蔣 +蔤 +蔥 +蔦 +蔧 +蔨 +蔩 +蔪 +蔫 +蔬 +蔭 +蔮 +蔰 +蔱 +蔴 +蔵 +蔷 +蔸 +蔹 +蔺 +蔻 +蔼 +蔽 +蔾 +蔿 +蕀 +蕁 +蕃 +蕄 +蕅 +蕆 +蕇 +蕈 +蕉 +蕊 +蕋 +蕍 +蕎 +蕑 +蕒 +蕓 +蕕 +蕖 +蕗 +蕘 +蕙 +蕚 +蕛 +蕝 +蕞 +蕟 +蕠 +蕡 +蕢 +蕣 +蕤 +蕦 +蕧 +蕨 +蕩 +蕪 +蕫 +蕭 +蕮 +蕰 +蕱 +蕲 +蕴 +蕵 +蕷 +蕸 +蕹 +蕺 +蕻 +蕼 +蕾 +蕿 +薀 +薁 +薂 +薃 +薄 +薅 +薆 +薇 +薈 +薉 +薊 +薋 +薌 +薍 +薎 +薏 +薐 +薑 +薔 +薕 +薖 +薗 +薘 +薙 +薚 +薛 +薜 +薝 +薞 +薟 +薠 +薡 +薢 +薣 +薤 +薦 +薧 +薨 +薩 +薪 +薫 +薬 +薭 +薮 +薯 +薰 +薱 +薲 +薳 +薴 +薵 +薶 +薷 +薸 +薹 +薺 +薽 +薾 +薿 +藀 +藁 +藂 +藃 +藄 +藅 +藆 +藇 +藈 +藉 +藋 +藍 +藎 +藏 +藐 +藑 +藒 +藓 +藔 +藕 +藗 +藘 +藙 +藚 +藜 +藝 +藟 +藠 +藡 +藣 +藤 +藥 +藦 +藨 +藩 +藪 +藫 +藬 +藭 +藰 +藱 +藲 +藴 +藶 +藷 +藸 +藹 +藺 +藻 +藼 +藾 +藿 +蘀 +蘁 +蘂 +蘄 +蘅 +蘆 +蘇 +蘉 +蘊 +蘋 +蘌 +蘐 +蘑 +蘓 +蘖 +蘗 +蘘 +蘙 +蘚 +蘛 +蘜 +蘞 +蘟 +蘠 +蘡 +蘢 +蘣 +蘤 +蘥 +蘦 +蘧 +蘩 +蘪 +蘬 +蘭 +蘮 +蘱 +蘳 +蘴 +蘵 +蘶 +蘸 +蘹 +蘺 +蘻 +蘼 +蘾 +蘿 +虀 +虃 +虆 +虇 +虈 +虉 +虋 +虌 +虎 +虏 +虐 +虑 +虒 +虓 +虔 +處 +虖 +虙 +虚 +虛 +虜 +虞 +號 +虡 +虢 +虣 +虤 +虧 +虨 +虩 +虪 +虫 +虬 +虭 +虮 +虯 +虰 +虱 +虴 +虵 +虷 +虸 +虹 +虺 +虻 +虼 +虽 +虾 +虿 +蚀 +蚁 +蚂 +蚄 +蚅 +蚆 +蚇 +蚊 +蚋 +蚌 +蚍 +蚑 +蚓 +蚕 +蚖 +蚗 +蚘 +蚙 +蚚 +蚜 +蚝 +蚞 +蚡 +蚢 +蚣 +蚤 +蚥 +蚧 +蚨 +蚩 +蚪 +蚬 +蚯 +蚰 +蚱 +蚲 +蚳 +蚴 +蚵 +蚶 +蚷 +蚸 +蚹 +蚺 +蚻 +蚼 +蚿 +蛀 +蛁 +蛂 +蛃 +蛄 +蛅 +蛆 +蛇 +蛈 +蛉 +蛊 +蛋 +蛌 +蛍 +蛎 +蛏 +蛐 +蛑 +蛓 +蛔 +蛕 +蛖 +蛗 +蛘 +蛙 +蛚 +蛛 +蛜 +蛝 +蛞 +蛟 +蛢 +蛣 +蛤 +蛦 +蛩 +蛪 +蛫 +蛬 +蛭 +蛮 +蛯 +蛰 +蛱 +蛲 +蛳 +蛴 +蛵 +蛶 +蛷 +蛸 +蛹 +蛺 +蛻 +蛾 +蜀 +蜁 +蜂 +蜃 +蜄 +蜆 +蜇 +蜈 +蜉 +蜊 +蜋 +蜌 +蜍 +蜎 +蜐 +蜑 +蜒 +蜓 +蜕 +蜖 +蜗 +蜘 +蜙 +蜚 +蜛 +蜜 +蜞 +蜠 +蜡 +蜢 +蜣 +蜤 +蜥 +蜦 +蜧 +蜨 +蜩 +蜪 +蜬 +蜭 +蜮 +蜯 +蜰 +蜱 +蜲 +蜳 +蜴 +蜵 +蜷 +蜸 +蜺 +蜻 +蜼 +蜾 +蜿 +蝀 +蝁 +蝂 +蝃 +蝆 +蝇 +蝈 +蝉 +蝋 +蝌 +蝍 +蝎 +蝐 +蝑 +蝒 +蝓 +蝔 +蝕 +蝖 +蝗 +蝘 +蝙 +蝚 +蝛 +蝜 +蝝 +蝞 +蝟 +蝠 +蝡 +蝣 +蝤 +蝥 +蝦 +蝨 +蝪 +蝫 +蝬 +蝭 +蝮 +蝯 +蝰 +蝱 +蝲 +蝳 +蝴 +蝶 +蝷 +蝸 +蝹 +蝺 +蝻 +蝼 +蝽 +蝾 +蝿 +螁 +螂 +螃 +螄 +螅 +螇 +螈 +螋 +融 +螎 +螏 +螐 +螑 +螒 +螓 +螔 +螖 +螗 +螘 +螚 +螛 +螜 +螝 +螞 +螟 +螠 +螡 +螢 +螣 +螤 +螥 +螨 +螪 +螫 +螬 +螭 +螮 +螯 +螰 +螱 +螳 +螴 +螵 +螶 +螷 +螸 +螹 +螺 +螻 +螼 +螽 +螾 +螿 +蟀 +蟁 +蟂 +蟃 +蟄 +蟅 +蟆 +蟇 +蟈 +蟉 +蟊 +蟋 +蟌 +蟎 +蟏 +蟑 +蟒 +蟓 +蟔 +蟗 +蟘 +蟙 +蟛 +蟜 +蟞 +蟟 +蟠 +蟡 +蟢 +蟣 +蟤 +蟥 +蟦 +蟧 +蟨 +蟪 +蟫 +蟬 +蟭 +蟮 +蟯 +蟲 +蟳 +蟴 +蟶 +蟷 +蟹 +蟺 +蟻 +蟼 +蟾 +蟿 +蠀 +蠁 +蠂 +蠃 +蠄 +蠅 +蠆 +蠈 +蠉 +蠊 +蠋 +蠌 +蠍 +蠏 +蠐 +蠑 +蠓 +蠔 +蠕 +蠖 +蠗 +蠘 +蠙 +蠛 +蠜 +蠝 +蠟 +蠠 +蠡 +蠢 +蠣 +蠤 +蠥 +蠦 +蠨 +蠩 +蠪 +蠫 +蠬 +蠭 +蠮 +蠯 +蠰 +蠱 +蠲 +蠳 +蠵 +蠶 +蠷 +蠸 +蠹 +蠻 +蠼 +蠽 +蠾 +蠿 +血 +衁 +衂 +衃 +衄 +衅 +衆 +衇 +衈 +衊 +衋 +行 +衍 +衎 +衒 +術 +衔 +衕 +衖 +街 +衙 +衚 +衛 +衜 +衝 +衞 +衠 +衡 +衢 +衣 +补 +衧 +表 +衩 +衪 +衫 +衬 +衭 +衮 +衯 +衰 +衱 +衲 +衵 +衶 +衷 +衹 +衺 +衽 +衾 +衿 +袀 +袁 +袂 +袃 +袄 +袅 +袆 +袈 +袉 +袋 +袌 +袍 +袑 +袒 +袓 +袕 +袖 +袗 +袘 +袙 +袚 +袛 +袜 +袞 +袟 +袠 +袡 +袢 +袤 +袧 +袨 +袪 +被 +袬 +袭 +袯 +袰 +袱 +袲 +袴 +袵 +袶 +袷 +袸 +袹 +袺 +袼 +袽 +袾 +袿 +裀 +裁 +裂 +裃 +装 +裆 +裈 +裉 +裊 +裋 +裍 +裎 +裏 +裒 +裔 +裕 +裖 +裗 +裘 +裙 +裚 +裛 +補 +裝 +裞 +裟 +裠 +裡 +裢 +裣 +裤 +裥 +裧 +裨 +裬 +裮 +裯 +裰 +裱 +裲 +裳 +裴 +裵 +裶 +裷 +裸 +裹 +裺 +裻 +裼 +製 +裾 +裿 +褀 +褁 +褂 +褄 +褅 +褆 +複 +褊 +褋 +褌 +褍 +褎 +褐 +褑 +褒 +褓 +褔 +褕 +褖 +褗 +褘 +褙 +褚 +褛 +褞 +褟 +褡 +褢 +褥 +褦 +褧 +褩 +褪 +褫 +褭 +褮 +褯 +褰 +褱 +褲 +褳 +褴 +褵 +褶 +褷 +褸 +褻 +褼 +褽 +褾 +襁 +襂 +襃 +襄 +襆 +襇 +襋 +襌 +襏 +襐 +襒 +襓 +襕 +襖 +襗 +襘 +襚 +襛 +襜 +襝 +襞 +襟 +襠 +襡 +襢 +襣 +襤 +襦 +襩 +襪 +襫 +襬 +襭 +襮 +襯 +襲 +襳 +襴 +襶 +襷 +襹 +襺 +襻 +襾 +西 +要 +覂 +覃 +覅 +覆 +覇 +覈 +見 +覌 +覎 +規 +覓 +覕 +視 +覗 +覘 +覚 +覛 +覜 +覝 +覡 +覢 +覣 +覤 +覦 +覧 +覩 +親 +覬 +覭 +覮 +覯 +覲 +観 +覶 +覷 +覺 +覽 +覿 +觀 +见 +观 +觃 +规 +觅 +视 +觇 +览 +觉 +觊 +觋 +觌 +觎 +觏 +觐 +觑 +角 +觓 +觔 +觕 +觖 +觙 +觚 +觜 +觝 +觞 +觟 +觠 +觡 +觢 +解 +觤 +觥 +触 +觩 +觫 +觬 +觭 +觯 +觰 +觱 +觲 +觳 +觴 +觶 +觷 +觸 +觺 +觻 +觼 +觾 +觿 +言 +訁 +訂 +訃 +訄 +訇 +計 +訊 +訌 +討 +訏 +訐 +訑 +訒 +訓 +訔 +訕 +訖 +託 +記 +訚 +訛 +訝 +訞 +訟 +訢 +訣 +訥 +訧 +訩 +訪 +訬 +設 +訰 +許 +訳 +訴 +訶 +訹 +診 +註 +証 +訾 +訿 +詀 +詁 +詄 +詅 +詆 +詈 +詍 +詎 +詐 +詒 +詔 +評 +詖 +詗 +詘 +詙 +詛 +詝 +詞 +詟 +詠 +詡 +詢 +詣 +詥 +試 +詧 +詩 +詪 +詫 +詬 +詭 +詮 +詰 +話 +該 +詳 +詵 +詶 +詷 +詹 +詻 +詼 +詿 +誂 +誃 +誄 +誅 +誆 +誇 +誉 +誊 +誋 +誌 +認 +誑 +誒 +誓 +誕 +誖 +誘 +誙 +誚 +語 +誠 +誡 +誣 +誤 +誥 +誦 +誨 +說 +誫 +説 +読 +誰 +課 +誴 +誶 +誸 +誹 +誻 +誼 +誾 +調 +諀 +諂 +諄 +諅 +諆 +談 +諈 +諉 +請 +諌 +諍 +諏 +諐 +諑 +諒 +諓 +諔 +諕 +論 +諗 +諚 +諛 +諜 +諝 +諞 +諟 +諠 +諡 +諢 +諤 +諦 +諧 +諪 +諫 +諭 +諮 +諰 +諱 +諲 +諳 +諴 +諵 +諶 +諷 +諸 +諺 +諼 +諾 +謀 +謁 +謂 +謄 +謅 +謇 +謈 +謊 +謋 +謌 +謍 +謎 +謏 +謐 +謑 +謒 +謔 +謕 +謖 +謗 +謘 +謙 +謚 +講 +謜 +謝 +謞 +謠 +謡 +謢 +謣 +謤 +謥 +謦 +謧 +謨 +謩 +謪 +謫 +謬 +謯 +謰 +謱 +謳 +謵 +謷 +謹 +謼 +謾 +譀 +譁 +譅 +譆 +譇 +譈 +證 +譊 +譋 +譌 +譎 +譏 +譐 +譑 +譓 +譔 +譕 +譖 +識 +譙 +譚 +譛 +譜 +譝 +譞 +譟 +譠 +譣 +譥 +警 +譨 +譪 +譫 +譬 +譭 +譯 +議 +譲 +譳 +譴 +護 +譸 +譹 +譺 +譻 +譽 +譾 +譿 +讀 +讂 +讃 +讄 +讆 +變 +讋 +讌 +讎 +讐 +讒 +讓 +讔 +讕 +讖 +讘 +讙 +讚 +讜 +讞 +讟 +计 +订 +讣 +认 +讥 +讦 +讧 +讨 +让 +讪 +讫 +训 +议 +讯 +记 +讱 +讲 +讳 +讴 +讵 +讶 +讷 +许 +讹 +论 +讻 +讼 +讽 +设 +访 +诀 +证 +诂 +诃 +评 +诅 +识 +诇 +诈 +诉 +诊 +诋 +诌 +词 +诎 +诏 +诐 +译 +诒 +诓 +诔 +试 +诖 +诗 +诘 +诙 +诚 +诛 +诜 +话 +诞 +诟 +诠 +诡 +询 +诣 +诤 +该 +详 +诧 +诨 +诩 +诫 +诬 +语 +诮 +误 +诰 +诱 +诲 +诳 +说 +诵 +请 +诸 +诹 +诺 +读 +诼 +诽 +课 +诿 +谀 +谁 +谂 +调 +谄 +谅 +谆 +谇 +谈 +谊 +谋 +谌 +谍 +谎 +谏 +谐 +谑 +谒 +谓 +谔 +谕 +谖 +谗 +谙 +谚 +谛 +谜 +谝 +谞 +谟 +谠 +谡 +谢 +谣 +谤 +谥 +谦 +谧 +谨 +谩 +谪 +谫 +谬 +谭 +谮 +谯 +谰 +谱 +谲 +谳 +谴 +谵 +谶 +谷 +谹 +谻 +谼 +谽 +谾 +谿 +豁 +豃 +豅 +豆 +豇 +豈 +豉 +豊 +豋 +豌 +豍 +豎 +豏 +豐 +豔 +豕 +豗 +豚 +豜 +豝 +豟 +象 +豢 +豤 +豥 +豦 +豨 +豪 +豫 +豬 +豭 +豮 +豯 +豰 +豱 +豲 +豳 +豵 +豶 +豷 +豸 +豹 +豺 +豻 +豽 +豿 +貀 +貁 +貂 +貄 +貅 +貆 +貉 +貊 +貌 +貍 +貏 +貐 +貑 +貒 +貓 +貔 +貕 +貗 +貘 +貙 +貛 +貜 +貝 +貞 +負 +財 +貢 +貣 +貤 +貧 +貨 +販 +貪 +貫 +責 +貭 +貮 +貯 +貰 +貲 +貳 +貴 +貶 +買 +貸 +貺 +費 +貼 +貽 +貾 +貿 +賀 +賁 +賂 +賃 +賄 +賅 +資 +賈 +賉 +賊 +賌 +賎 +賑 +賒 +賓 +賔 +賕 +賙 +賚 +賛 +賜 +賞 +賟 +賠 +賡 +賢 +賣 +賤 +賥 +賦 +賧 +賨 +質 +賫 +賬 +賭 +賮 +賴 +賵 +賸 +賹 +賺 +賻 +購 +賽 +賾 +贄 +贅 +贆 +贇 +贈 +贊 +贋 +贌 +贍 +贏 +贐 +贓 +贔 +贕 +贖 +贗 +贙 +贛 +贜 +贝 +贞 +负 +贡 +财 +责 +贤 +败 +账 +货 +质 +贩 +贪 +贫 +贬 +购 +贮 +贯 +贰 +贱 +贲 +贳 +贴 +贵 +贶 +贷 +贸 +费 +贺 +贻 +贼 +贽 +贾 +贿 +赀 +赁 +赂 +赃 +资 +赅 +赆 +赇 +赈 +赉 +赊 +赋 +赌 +赍 +赎 +赏 +赐 +赑 +赒 +赓 +赔 +赕 +赖 +赗 +赘 +赙 +赚 +赛 +赜 +赝 +赞 +赟 +赠 +赡 +赢 +赣 +赤 +赦 +赧 +赨 +赩 +赪 +赫 +赬 +赭 +赮 +走 +赳 +赴 +赵 +赶 +起 +赸 +趀 +趁 +趂 +趄 +超 +越 +趋 +趌 +趍 +趎 +趏 +趐 +趑 +趓 +趔 +趕 +趖 +趙 +趜 +趟 +趠 +趡 +趣 +趥 +趧 +趨 +趪 +趫 +趬 +趭 +趮 +趯 +趱 +趲 +足 +趴 +趵 +趷 +趸 +趹 +趺 +趼 +趾 +趿 +跂 +跃 +跄 +跅 +跆 +跇 +跈 +跋 +跌 +跍 +跎 +跏 +跐 +跑 +跓 +跕 +跖 +跗 +跘 +跙 +跚 +跛 +跜 +距 +跞 +跟 +跠 +跡 +跢 +跣 +跤 +跥 +跦 +跧 +跨 +跩 +跪 +跫 +跬 +跮 +路 +跰 +跱 +跲 +跳 +跴 +践 +跶 +跷 +跸 +跹 +跺 +跻 +跼 +跽 +跾 +跿 +踂 +踃 +踅 +踆 +踇 +踉 +踊 +踌 +踍 +踎 +踏 +踐 +踑 +踒 +踓 +踔 +踕 +踖 +踘 +踙 +踛 +踝 +踞 +踟 +踠 +踡 +踢 +踣 +踤 +踥 +踦 +踧 +踩 +踪 +踫 +踬 +踮 +踯 +踰 +踱 +踳 +踴 +踵 +踶 +踸 +踹 +踺 +踼 +踽 +踾 +蹀 +蹁 +蹂 +蹄 +蹅 +蹇 +蹈 +蹉 +蹊 +蹋 +蹌 +蹍 +蹎 +蹏 +蹐 +蹑 +蹒 +蹓 +蹔 +蹕 +蹖 +蹗 +蹙 +蹚 +蹛 +蹜 +蹝 +蹞 +蹟 +蹠 +蹡 +蹢 +蹣 +蹤 +蹥 +蹦 +蹧 +蹩 +蹪 +蹬 +蹭 +蹯 +蹰 +蹲 +蹳 +蹴 +蹵 +蹶 +蹸 +蹺 +蹻 +蹼 +蹽 +蹾 +蹿 +躁 +躂 +躄 +躅 +躆 +躇 +躈 +躉 +躊 +躋 +躍 +躏 +躐 +躑 +躒 +躓 +躔 +躕 +躖 +躗 +躙 +躚 +躜 +躝 +躞 +躟 +躠 +躡 +躣 +躤 +躥 +躦 +躨 +躩 +躪 +身 +躬 +躭 +躯 +躰 +躲 +躳 +躶 +躺 +躽 +軀 +車 +軋 +軌 +軍 +軎 +軏 +軑 +軒 +軓 +軔 +軘 +軛 +軝 +軞 +軟 +転 +軤 +軥 +軦 +軧 +軨 +軫 +軬 +軮 +軯 +軱 +軲 +軵 +軶 +軷 +軸 +軹 +軺 +軻 +軼 +軽 +軾 +軿 +輀 +輁 +輂 +較 +輄 +輅 +輆 +輇 +輈 +載 +輊 +輋 +輌 +輐 +輑 +輒 +輓 +輔 +輕 +輖 +輗 +輘 +輚 +輛 +輜 +輝 +輞 +輟 +輠 +輣 +輤 +輥 +輦 +輩 +輪 +輬 +輭 +輮 +輯 +輲 +輳 +輴 +輵 +輶 +輷 +輸 +輹 +輻 +輾 +輿 +轀 +轂 +轃 +轄 +轅 +轆 +轇 +轈 +轉 +轍 +轎 +轏 +轐 +轑 +轒 +轓 +轔 +轕 +轖 +轗 +轘 +轙 +轚 +轛 +轝 +轞 +轟 +轠 +轡 +轢 +轤 +车 +轧 +轨 +轩 +轪 +轫 +转 +轭 +轮 +软 +轰 +轱 +轲 +轳 +轴 +轵 +轶 +轷 +轸 +轹 +轺 +轻 +轼 +载 +轾 +轿 +辀 +辁 +辂 +较 +辄 +辅 +辆 +辇 +辈 +辉 +辊 +辋 +辌 +辍 +辎 +辏 +辐 +辑 +辒 +输 +辔 +辕 +辖 +辗 +辘 +辙 +辚 +辛 +辜 +辞 +辟 +辠 +辢 +辣 +辥 +辦 +辧 +辨 +辩 +辫 +辭 +辮 +辯 +辰 +辱 +農 +辴 +辵 +边 +辺 +辻 +込 +辽 +达 +辿 +迁 +迂 +迄 +迅 +迆 +过 +迈 +迉 +迋 +迍 +迎 +运 +近 +迒 +迓 +返 +迕 +迖 +还 +这 +进 +远 +违 +连 +迟 +迡 +迢 +迣 +迤 +迥 +迦 +迨 +迩 +迪 +迫 +迭 +迮 +述 +迳 +迴 +迵 +迷 +迸 +迹 +迺 +迻 +追 +迾 +迿 +退 +送 +适 +逃 +逄 +逅 +逆 +逈 +选 +逊 +逋 +逌 +逍 +逎 +透 +逐 +逑 +递 +逓 +途 +逕 +逖 +逗 +這 +通 +逛 +逜 +逝 +逞 +速 +造 +逡 +逢 +連 +逤 +逦 +逨 +逩 +逭 +逮 +逯 +週 +進 +逴 +逵 +逶 +逸 +逹 +逺 +逻 +逼 +逾 +逿 +遁 +遂 +遄 +遅 +遆 +遇 +遊 +運 +遍 +過 +遏 +遐 +遑 +遒 +道 +達 +違 +遗 +遘 +遙 +遛 +遜 +遝 +遞 +遠 +遡 +遢 +遣 +遥 +遨 +適 +遭 +遮 +遯 +遰 +遲 +遳 +遴 +遵 +遶 +遷 +選 +遹 +遺 +遻 +遼 +遽 +遾 +避 +邀 +邁 +邂 +邃 +還 +邅 +邆 +邇 +邈 +邉 +邊 +邋 +邍 +邏 +邐 +邑 +邓 +邔 +邕 +邗 +邘 +邙 +邛 +邝 +邞 +邟 +邠 +邡 +邢 +那 +邥 +邦 +邧 +邨 +邪 +邬 +邮 +邯 +邰 +邱 +邲 +邳 +邴 +邵 +邶 +邸 +邹 +邺 +邻 +邽 +邾 +邿 +郁 +郃 +郄 +郅 +郇 +郈 +郊 +郋 +郎 +郏 +郐 +郑 +郓 +郔 +郕 +郖 +郗 +郘 +郙 +郚 +郛 +郜 +郝 +郞 +郟 +郠 +郡 +郢 +郣 +郤 +郥 +郦 +郧 +部 +郪 +郫 +郭 +郯 +郰 +郱 +郲 +郳 +郴 +郵 +郷 +郸 +郹 +郺 +郻 +郼 +都 +郾 +郿 +鄀 +鄁 +鄂 +鄃 +鄄 +鄅 +鄆 +鄇 +鄈 +鄉 +鄋 +鄌 +鄍 +鄎 +鄏 +鄐 +鄑 +鄒 +鄔 +鄖 +鄗 +鄘 +鄙 +鄚 +鄛 +鄜 +鄝 +鄞 +鄟 +鄠 +鄡 +鄢 +鄣 +鄤 +鄦 +鄧 +鄨 +鄩 +鄪 +鄫 +鄬 +鄭 +鄮 +鄯 +鄰 +鄱 +鄲 +鄳 +鄴 +鄵 +鄶 +鄸 +鄹 +鄺 +鄻 +鄾 +酀 +酁 +酂 +酃 +酄 +酅 +酆 +酇 +酈 +酉 +酊 +酋 +酌 +配 +酎 +酏 +酐 +酒 +酓 +酔 +酖 +酗 +酘 +酚 +酝 +酞 +酟 +酡 +酢 +酣 +酤 +酥 +酦 +酧 +酨 +酩 +酪 +酬 +酮 +酯 +酰 +酱 +酲 +酳 +酴 +酵 +酶 +酷 +酸 +酹 +酺 +酼 +酽 +酾 +酿 +醁 +醂 +醃 +醅 +醆 +醇 +醉 +醊 +醋 +醌 +醍 +醐 +醑 +醒 +醓 +醕 +醖 +醗 +醙 +醚 +醛 +醜 +醞 +醟 +醢 +醣 +醤 +醥 +醧 +醨 +醪 +醫 +醬 +醭 +醮 +醯 +醰 +醱 +醲 +醳 +醴 +醵 +醷 +醸 +醹 +醺 +醻 +醼 +醽 +醾 +醿 +釀 +釁 +釂 +釃 +釅 +釆 +采 +釈 +釉 +释 +釋 +里 +重 +野 +量 +釐 +金 +釓 +釔 +釕 +釗 +釘 +釙 +釚 +釜 +針 +釢 +釣 +釤 +釦 +釧 +釩 +釪 +釬 +釭 +釱 +釳 +釴 +釵 +釷 +釸 +釹 +釺 +釽 +釿 +鈀 +鈁 +鈃 +鈄 +鈆 +鈇 +鈈 +鈉 +鈊 +鈌 +鈍 +鈎 +鈏 +鈐 +鈑 +鈒 +鈔 +鈕 +鈖 +鈚 +鈞 +鈢 +鈣 +鈥 +鈦 +鈧 +鈫 +鈮 +鈰 +鈳 +鈴 +鈶 +鈷 +鈸 +鈹 +鈺 +鈽 +鈾 +鈿 +鉀 +鉄 +鉅 +鉆 +鉇 +鉈 +鉉 +鉊 +鉋 +鉌 +鉍 +鉏 +鉑 +鉒 +鉓 +鉕 +鉗 +鉚 +鉛 +鉞 +鉟 +鉠 +鉢 +鉤 +鉥 +鉦 +鉧 +鉬 +鉭 +鉮 +鉯 +鉱 +鉲 +鉴 +鉶 +鉷 +鉸 +鉹 +鉺 +鉻 +鉼 +鉾 +鉿 +銀 +銂 +銃 +銅 +銈 +銋 +銍 +銎 +銑 +銓 +銔 +銕 +銖 +銗 +銘 +銚 +銛 +銜 +銠 +銣 +銤 +銥 +銦 +銨 +銩 +銪 +銫 +銬 +銭 +銮 +銱 +銲 +銳 +銶 +銷 +銹 +銻 +銼 +銾 +鋀 +鋁 +鋂 +鋃 +鋄 +鋅 +鋆 +鋇 +鋈 +鋊 +鋋 +鋌 +鋏 +鋐 +鋒 +鋕 +鋗 +鋘 +鋙 +鋝 +鋟 +鋡 +鋤 +鋥 +鋦 +鋨 +鋩 +鋪 +鋭 +鋮 +鋯 +鋰 +鋱 +鋲 +鋳 +鋶 +鋸 +鋹 +鋺 +鋼 +錀 +錁 +錄 +錆 +錈 +錍 +錎 +錏 +錐 +錒 +錕 +錘 +錙 +錚 +錛 +錞 +錟 +錠 +錡 +錢 +錣 +錦 +錧 +錨 +錫 +錬 +錭 +錮 +錯 +録 +錳 +錵 +錶 +錸 +錻 +錼 +錾 +鍀 +鍁 +鍆 +鍇 +鍈 +鍉 +鍊 +鍋 +鍌 +鍍 +鍏 +鍐 +鍑 +鍔 +鍖 +鍘 +鍚 +鍛 +鍜 +鍝 +鍟 +鍠 +鍤 +鍥 +鍩 +鍪 +鍬 +鍭 +鍮 +鍰 +鍱 +鍳 +鍵 +鍶 +鍷 +鍺 +鍼 +鍾 +鎂 +鎃 +鎅 +鎉 +鎊 +鎌 +鎎 +鎏 +鎒 +鎓 +鎔 +鎖 +鎗 +鎘 +鎚 +鎛 +鎝 +鎞 +鎡 +鎢 +鎣 +鎦 +鎧 +鎩 +鎪 +鎬 +鎭 +鎮 +鎯 +鎰 +鎳 +鎵 +鎷 +鎸 +鎹 +鎻 +鏂 +鏃 +鏇 +鏈 +鏊 +鏌 +鏍 +鏏 +鏐 +鏑 +鏓 +鏖 +鏗 +鏘 +鏙 +鏚 +鏜 +鏝 +鏞 +鏟 +鏡 +鏢 +鏤 +鏦 +鏨 +鏬 +鏰 +鏳 +鏴 +鏵 +鏷 +鏹 +鏺 +鏻 +鏽 +鏾 +鐀 +鐃 +鐇 +鐈 +鐋 +鐍 +鐎 +鐏 +鐐 +鐓 +鐔 +鐕 +鐖 +鐘 +鐙 +鐚 +鐝 +鐠 +鐡 +鐤 +鐦 +鐧 +鐨 +鐫 +鐬 +鐭 +鐮 +鐯 +鐲 +鐳 +鐵 +鐶 +鐸 +鐺 +鐻 +鐽 +鐾 +鐿 +鑀 +鑁 +鑂 +鑄 +鑅 +鑊 +鑋 +鑌 +鑐 +鑑 +鑒 +鑔 +鑕 +鑚 +鑛 +鑞 +鑠 +鑢 +鑣 +鑤 +鑨 +鑪 +鑫 +鑭 +鑮 +鑯 +鑰 +鑱 +鑲 +鑴 +鑵 +鑷 +鑹 +鑼 +鑽 +鑾 +鑿 +钀 +钁 +钂 +钃 +钆 +钇 +针 +钉 +钊 +钋 +钌 +钍 +钎 +钏 +钐 +钒 +钓 +钔 +钕 +钖 +钗 +钘 +钙 +钚 +钛 +钜 +钝 +钞 +钟 +钠 +钡 +钢 +钣 +钤 +钥 +钦 +钧 +钨 +钩 +钪 +钫 +钬 +钭 +钮 +钯 +钰 +钱 +钲 +钳 +钴 +钵 +钷 +钹 +钺 +钻 +钼 +钽 +钾 +钿 +铀 +铁 +铂 +铃 +铄 +铅 +铆 +铈 +铉 +铊 +铋 +铌 +铍 +铎 +铏 +铐 +铑 +铒 +铕 +铖 +铗 +铘 +铙 +铚 +铛 +铜 +铝 +铞 +铟 +铠 +铡 +铢 +铣 +铤 +铥 +铧 +铨 +铩 +铪 +铫 +铬 +铭 +铮 +铯 +铰 +铱 +铲 +铳 +铴 +铵 +银 +铷 +铸 +铹 +铺 +铻 +铼 +铽 +链 +铿 +销 +锁 +锂 +锃 +锄 +锅 +锆 +锇 +锈 +锉 +锊 +锋 +锌 +锍 +锎 +锏 +锐 +锑 +锒 +锓 +锔 +锕 +锖 +锗 +锘 +错 +锚 +锛 +锜 +锝 +锞 +锟 +锡 +锢 +锣 +锤 +锥 +锦 +锧 +锨 +锩 +锪 +锫 +锬 +锭 +键 +锯 +锰 +锱 +锲 +锳 +锴 +锵 +锶 +锷 +锸 +锹 +锺 +锻 +锼 +锽 +锾 +锿 +镀 +镁 +镂 +镃 +镄 +镅 +镆 +镇 +镈 +镉 +镊 +镋 +镌 +镍 +镎 +镏 +镐 +镑 +镒 +镓 +镔 +镕 +镖 +镗 +镘 +镚 +镛 +镜 +镝 +镞 +镠 +镡 +镢 +镣 +镤 +镥 +镦 +镧 +镨 +镩 +镪 +镫 +镬 +镭 +镮 +镯 +镰 +镱 +镲 +镳 +镴 +镵 +镶 +長 +镺 +镻 +镼 +镽 +长 +門 +閂 +閃 +閆 +閇 +閈 +閉 +開 +閌 +閍 +閎 +閏 +閑 +閒 +間 +閔 +閘 +閜 +閞 +閟 +閡 +関 +閣 +閤 +閥 +閦 +閧 +閨 +閩 +閫 +閬 +閭 +閰 +閱 +閲 +閵 +閶 +閷 +閹 +閺 +閻 +閼 +閽 +閾 +閿 +闀 +闃 +闅 +闆 +闇 +闈 +闉 +闊 +闋 +闌 +闍 +闐 +闑 +闒 +闓 +闔 +闕 +闖 +闘 +闚 +闛 +關 +闞 +闟 +闠 +闡 +闢 +闤 +闥 +门 +闩 +闪 +闫 +闭 +问 +闯 +闰 +闱 +闲 +闳 +间 +闵 +闶 +闷 +闸 +闹 +闺 +闻 +闼 +闽 +闾 +闿 +阀 +阁 +阂 +阃 +阄 +阅 +阆 +阇 +阈 +阉 +阊 +阋 +阌 +阍 +阎 +阏 +阐 +阑 +阒 +阔 +阕 +阖 +阗 +阘 +阙 +阚 +阜 +阝 +阞 +队 +阠 +阡 +阢 +阤 +阨 +阪 +阬 +阭 +阮 +阯 +阰 +阱 +防 +阳 +阴 +阵 +阶 +阸 +阹 +阺 +阻 +阼 +阽 +阿 +陀 +陁 +陂 +附 +际 +陆 +陇 +陈 +陉 +陊 +陋 +陌 +降 +陎 +陏 +限 +陑 +陓 +陔 +陕 +陗 +陘 +陛 +陜 +陝 +陞 +陟 +陡 +院 +陣 +除 +陥 +陧 +陨 +险 +陪 +陫 +陬 +陭 +陰 +陲 +陳 +陴 +陵 +陶 +陷 +陸 +険 +陻 +陼 +陽 +陾 +隃 +隄 +隅 +隆 +隇 +隈 +隉 +隊 +隋 +隍 +階 +随 +隐 +隑 +隒 +隓 +隔 +隕 +隗 +隘 +隙 +際 +障 +隞 +隠 +隣 +隤 +隧 +隨 +隩 +險 +隮 +隰 +隱 +隲 +隳 +隴 +隶 +隷 +隸 +隹 +隺 +隻 +隼 +隽 +难 +隿 +雀 +雁 +雂 +雄 +雅 +集 +雇 +雈 +雉 +雊 +雋 +雌 +雍 +雎 +雏 +雑 +雒 +雓 +雔 +雕 +雖 +雗 +雘 +雙 +雚 +雛 +雜 +雝 +雞 +雟 +雠 +離 +難 +雨 +雩 +雪 +雫 +雯 +雰 +雱 +雲 +雳 +零 +雷 +雹 +雺 +電 +雽 +雾 +雿 +需 +霁 +霂 +霄 +霅 +霆 +震 +霈 +霉 +霊 +霋 +霍 +霎 +霏 +霐 +霑 +霒 +霓 +霖 +霙 +霜 +霞 +霠 +霢 +霣 +霤 +霧 +霨 +霩 +霪 +霫 +霬 +霭 +霮 +霰 +露 +霵 +霶 +霸 +霹 +霽 +霾 +霿 +靁 +靂 +靃 +靄 +靆 +靈 +靉 +靑 +青 +靓 +靖 +静 +靚 +靛 +靜 +非 +靠 +靡 +面 +靥 +靦 +靨 +革 +靪 +靫 +靬 +靭 +靮 +靰 +靱 +靲 +靳 +靴 +靶 +靷 +靸 +靺 +靻 +靼 +靽 +靾 +靿 +鞀 +鞁 +鞂 +鞃 +鞄 +鞅 +鞆 +鞈 +鞊 +鞋 +鞌 +鞍 +鞎 +鞏 +鞑 +鞒 +鞔 +鞗 +鞘 +鞙 +鞚 +鞜 +鞞 +鞠 +鞡 +鞣 +鞤 +鞥 +鞦 +鞧 +鞨 +鞪 +鞫 +鞬 +鞭 +鞮 +鞯 +鞲 +鞳 +鞴 +鞵 +鞶 +鞷 +鞹 +鞻 +鞽 +鞾 +鞿 +韁 +韂 +韃 +韄 +韅 +韆 +韇 +韉 +韋 +韌 +韍 +韎 +韏 +韐 +韑 +韓 +韔 +韕 +韗 +韙 +韜 +韝 +韞 +韟 +韠 +韡 +韣 +韥 +韦 +韧 +韨 +韩 +韪 +韫 +韬 +韭 +韮 +韰 +韱 +音 +韵 +韶 +韹 +韺 +韻 +韽 +韾 +響 +頁 +頂 +頃 +頄 +項 +順 +頇 +須 +頊 +頌 +頍 +頎 +頏 +預 +頑 +頒 +頓 +頔 +頖 +頗 +領 +頚 +頜 +頝 +頞 +頠 +頡 +頤 +頦 +頨 +頩 +頫 +頬 +頭 +頯 +頰 +頲 +頴 +頵 +頷 +頸 +頹 +頻 +頼 +頽 +顁 +顄 +顅 +顆 +顇 +顈 +顉 +顊 +顋 +題 +額 +顎 +顏 +顐 +顑 +顒 +顓 +顔 +顕 +顗 +願 +顙 +顛 +顜 +顝 +類 +顟 +顠 +顢 +顣 +顤 +顥 +顦 +顧 +顩 +顪 +顫 +顯 +顰 +顱 +顲 +顳 +顴 +页 +顶 +顷 +顸 +项 +顺 +须 +顼 +顽 +顾 +顿 +颀 +颁 +颂 +颃 +预 +颅 +领 +颇 +颈 +颉 +颊 +颋 +颌 +颍 +颎 +颏 +颐 +频 +颓 +颔 +颖 +颗 +题 +颙 +颚 +颛 +颜 +额 +颞 +颟 +颠 +颡 +颢 +颤 +颥 +颦 +颧 +風 +颬 +颭 +颮 +颯 +颱 +颲 +颳 +颶 +颸 +颺 +颻 +颼 +颽 +颾 +颿 +飁 +飂 +飄 +飆 +飈 +飉 +飋 +飌 +风 +飏 +飐 +飑 +飒 +飓 +飔 +飕 +飗 +飘 +飙 +飛 +飜 +飞 +食 +飡 +飢 +飣 +飥 +飧 +飨 +飩 +飪 +飫 +飬 +飭 +飮 +飯 +飱 +飲 +飴 +飶 +飺 +飼 +飽 +飾 +飿 +餀 +餂 +餃 +餄 +餅 +餈 +餉 +養 +餌 +餍 +餎 +餏 +餐 +餑 +餒 +餓 +餔 +餕 +餖 +餗 +餘 +餚 +餛 +餜 +餝 +餞 +餟 +餠 +餡 +餤 +餥 +餧 +館 +餪 +餫 +餬 +餭 +餮 +餯 +餰 +餱 +餲 +餳 +餵 +餷 +餹 +餺 +餻 +餼 +餽 +餾 +餿 +饁 +饂 +饃 +饅 +饇 +饈 +饉 +饊 +饋 +饌 +饍 +饎 +饐 +饑 +饒 +饔 +饕 +饗 +饘 +饙 +饛 +饜 +饞 +饟 +饡 +饢 +饥 +饧 +饨 +饩 +饪 +饫 +饬 +饭 +饮 +饯 +饰 +饱 +饲 +饳 +饴 +饵 +饶 +饷 +饸 +饹 +饺 +饻 +饼 +饽 +饿 +馁 +馃 +馄 +馅 +馆 +馇 +馈 +馉 +馊 +馋 +馌 +馍 +馏 +馐 +馑 +馒 +馓 +馔 +馕 +首 +馗 +馘 +香 +馛 +馝 +馞 +馣 +馥 +馦 +馧 +馨 +馬 +馭 +馮 +馯 +馰 +馱 +馲 +馳 +馴 +馵 +馹 +馺 +馻 +馼 +馽 +駁 +駂 +駃 +駄 +駅 +駆 +駈 +駉 +駍 +駎 +駏 +駐 +駑 +駒 +駓 +駔 +駕 +駖 +駘 +駙 +駛 +駜 +駝 +駟 +駡 +駢 +駣 +駤 +駥 +駩 +駪 +駬 +駭 +駮 +駰 +駱 +駴 +駶 +駷 +駸 +駹 +駺 +駻 +駼 +駽 +駾 +駿 +騁 +騂 +騃 +騄 +騅 +騇 +騉 +騊 +騋 +騌 +騍 +騎 +騏 +騑 +騒 +験 +騕 +騖 +騙 +騚 +騛 +騜 +騝 +騞 +騠 +騢 +騣 +騤 +騥 +騧 +騨 +騩 +騪 +騫 +騬 +騭 +騮 +騰 +騱 +騲 +騴 +騵 +騶 +騷 +騸 +騹 +騺 +騽 +騾 +驀 +驁 +驂 +驃 +驄 +驅 +驆 +驈 +驉 +驊 +驌 +驍 +驎 +驏 +驒 +驓 +驔 +驕 +驖 +驗 +驚 +驛 +驞 +驟 +驠 +驢 +驤 +驥 +驦 +驨 +驩 +驪 +驫 +马 +驭 +驮 +驯 +驰 +驱 +驲 +驳 +驴 +驵 +驶 +驷 +驸 +驹 +驺 +驻 +驼 +驽 +驾 +驿 +骀 +骁 +骂 +骃 +骄 +骅 +骆 +骇 +骈 +骉 +骊 +骋 +验 +骍 +骎 +骏 +骐 +骑 +骒 +骓 +骕 +骖 +骗 +骘 +骙 +骚 +骛 +骜 +骝 +骞 +骟 +骠 +骡 +骢 +骣 +骤 +骥 +骦 +骧 +骨 +骫 +骭 +骯 +骰 +骱 +骴 +骶 +骷 +骸 +骹 +骺 +骼 +骽 +骾 +骿 +髀 +髁 +髂 +髃 +髄 +髅 +髆 +髇 +髈 +髊 +髋 +髌 +髍 +髎 +髏 +髐 +髑 +髒 +髓 +體 +髕 +髖 +高 +髙 +髟 +髡 +髢 +髣 +髥 +髦 +髧 +髪 +髫 +髬 +髭 +髮 +髯 +髲 +髳 +髴 +髶 +髷 +髹 +髺 +髻 +髼 +髽 +髾 +鬀 +鬁 +鬃 +鬄 +鬅 +鬆 +鬈 +鬉 +鬊 +鬋 +鬌 +鬍 +鬎 +鬏 +鬐 +鬒 +鬓 +鬕 +鬖 +鬗 +鬘 +鬙 +鬚 +鬞 +鬟 +鬠 +鬢 +鬣 +鬤 +鬥 +鬧 +鬨 +鬩 +鬪 +鬫 +鬬 +鬮 +鬯 +鬱 +鬲 +鬳 +鬵 +鬶 +鬷 +鬹 +鬺 +鬻 +鬼 +鬾 +鬿 +魁 +魂 +魃 +魄 +魅 +魆 +魇 +魈 +魉 +魊 +魋 +魌 +魍 +魎 +魏 +魑 +魔 +魕 +魖 +魘 +魚 +魛 +魞 +魟 +魠 +魡 +魣 +魦 +魧 +魨 +魩 +魮 +魯 +魱 +魴 +魵 +魶 +魷 +魻 +魼 +魾 +鮀 +鮁 +鮂 +鮃 +鮄 +鮅 +鮆 +鮇 +鮊 +鮋 +鮍 +鮎 +鮐 +鮑 +鮒 +鮓 +鮗 +鮚 +鮛 +鮜 +鮝 +鮞 +鮟 +鮠 +鮡 +鮣 +鮤 +鮥 +鮦 +鮨 +鮪 +鮫 +鮭 +鮮 +鮰 +鮵 +鮸 +鮹 +鮻 +鮿 +鯀 +鯁 +鯃 +鯆 +鯇 +鯈 +鯉 +鯊 +鯏 +鯒 +鯓 +鯔 +鯕 +鯖 +鯗 +鯙 +鯛 +鯝 +鯞 +鯠 +鯡 +鯢 +鯤 +鯦 +鯧 +鯨 +鯪 +鯫 +鯬 +鯭 +鯮 +鯰 +鯱 +鯶 +鯷 +鯸 +鯻 +鯽 +鯿 +鰂 +鰃 +鰅 +鰆 +鰈 +鰉 +鰋 +鰌 +鰍 +鰏 +鰐 +鰒 +鰓 +鰕 +鰗 +鰛 +鰜 +鰝 +鰟 +鰣 +鰤 +鰥 +鰧 +鰨 +鰩 +鰫 +鰬 +鰭 +鰮 +鰯 +鰰 +鰱 +鰲 +鰳 +鰴 +鰶 +鰷 +鰹 +鰺 +鰻 +鰼 +鰾 +鰿 +鱀 +鱁 +鱂 +鱄 +鱅 +鱆 +鱇 +鱈 +鱉 +鱊 +鱋 +鱍 +鱐 +鱒 +鱓 +鱔 +鱕 +鱖 +鱗 +鱘 +鱚 +鱝 +鱞 +鱟 +鱠 +鱢 +鱣 +鱥 +鱦 +鱧 +鱨 +鱬 +鱭 +鱮 +鱰 +鱲 +鱳 +鱴 +鱵 +鱷 +鱸 +鱹 +鱺 +鱻 +鱼 +鱽 +鱾 +鱿 +鲀 +鲁 +鲂 +鲃 +鲅 +鲆 +鲇 +鲈 +鲉 +鲊 +鲋 +鲌 +鲍 +鲎 +鲏 +鲐 +鲑 +鲒 +鲔 +鲕 +鲖 +鲗 +鲘 +鲙 +鲚 +鲛 +鲜 +鲝 +鲞 +鲟 +鲠 +鲡 +鲢 +鲣 +鲤 +鲥 +鲦 +鲧 +鲨 +鲩 +鲪 +鲫 +鲬 +鲭 +鲮 +鲯 +鲰 +鲱 +鲲 +鲳 +鲴 +鲵 +鲷 +鲸 +鲹 +鲺 +鲻 +鲼 +鲽 +鲾 +鲿 +鳀 +鳁 +鳂 +鳃 +鳄 +鳅 +鳇 +鳈 +鳉 +鳊 +鳌 +鳍 +鳎 +鳏 +鳐 +鳑 +鳒 +鳓 +鳔 +鳕 +鳖 +鳗 +鳘 +鳙 +鳚 +鳛 +鳜 +鳝 +鳞 +鳟 +鳠 +鳡 +鳢 +鳣 +鳤 +鳥 +鳦 +鳧 +鳩 +鳪 +鳬 +鳭 +鳯 +鳰 +鳱 +鳲 +鳳 +鳴 +鳵 +鳶 +鳷 +鳹 +鳺 +鳻 +鳼 +鳽 +鳾 +鳿 +鴀 +鴃 +鴅 +鴆 +鴇 +鴈 +鴉 +鴎 +鴐 +鴒 +鴓 +鴔 +鴕 +鴗 +鴘 +鴛 +鴝 +鴞 +鴟 +鴠 +鴡 +鴢 +鴣 +鴥 +鴦 +鴨 +鴩 +鴫 +鴮 +鴯 +鴰 +鴱 +鴳 +鴴 +鴶 +鴷 +鴸 +鴻 +鴽 +鴾 +鴿 +鵀 +鵁 +鵂 +鵃 +鵄 +鵅 +鵊 +鵋 +鵌 +鵎 +鵏 +鵐 +鵑 +鵒 +鵓 +鵔 +鵖 +鵗 +鵙 +鵛 +鵜 +鵝 +鵞 +鵟 +鵠 +鵡 +鵧 +鵩 +鵪 +鵫 +鵬 +鵮 +鵯 +鵰 +鵱 +鵲 +鵳 +鵴 +鵵 +鵷 +鵸 +鵹 +鵺 +鵻 +鵼 +鵽 +鵾 +鶀 +鶁 +鶂 +鶄 +鶅 +鶆 +鶇 +鶈 +鶉 +鶊 +鶋 +鶌 +鶏 +鶐 +鶒 +鶓 +鶔 +鶖 +鶗 +鶘 +鶙 +鶚 +鶛 +鶜 +鶝 +鶞 +鶟 +鶠 +鶡 +鶢 +鶣 +鶤 +鶥 +鶨 +鶩 +鶪 +鶬 +鶭 +鶯 +鶱 +鶲 +鶴 +鶵 +鶶 +鶷 +鶹 +鶺 +鶻 +鶼 +鶾 +鶿 +鷀 +鷁 +鷂 +鷃 +鷄 +鷅 +鷇 +鷈 +鷉 +鷊 +鷋 +鷎 +鷏 +鷐 +鷑 +鷒 +鷓 +鷕 +鷖 +鷗 +鷘 +鷙 +鷚 +鷛 +鷜 +鷞 +鷟 +鷡 +鷢 +鷣 +鷤 +鷥 +鷦 +鷩 +鷫 +鷮 +鷯 +鷰 +鷲 +鷳 +鷵 +鷶 +鷷 +鷸 +鷹 +鷺 +鷻 +鷽 +鷾 +鷿 +鸀 +鸁 +鸂 +鸃 +鸄 +鸅 +鸆 +鸇 +鸉 +鸊 +鸋 +鸌 +鸍 +鸏 +鸐 +鸑 +鸒 +鸓 +鸔 +鸕 +鸗 +鸘 +鸙 +鸚 +鸛 +鸜 +鸝 +鸞 +鸟 +鸠 +鸡 +鸢 +鸣 +鸤 +鸥 +鸦 +鸧 +鸨 +鸩 +鸪 +鸫 +鸬 +鸭 +鸮 +鸯 +鸰 +鸱 +鸲 +鸳 +鸵 +鸶 +鸷 +鸸 +鸹 +鸺 +鸻 +鸼 +鸽 +鸾 +鸿 +鹀 +鹁 +鹂 +鹃 +鹄 +鹅 +鹆 +鹇 +鹈 +鹉 +鹊 +鹋 +鹌 +鹍 +鹎 +鹏 +鹐 +鹑 +鹒 +鹔 +鹕 +鹖 +鹗 +鹘 +鹙 +鹚 +鹛 +鹜 +鹝 +鹞 +鹟 +鹠 +鹡 +鹢 +鹣 +鹤 +鹦 +鹧 +鹨 +鹩 +鹪 +鹫 +鹬 +鹭 +鹮 +鹯 +鹰 +鹱 +鹲 +鹳 +鹴 +鹵 +鹸 +鹹 +鹺 +鹻 +鹼 +鹽 +鹾 +鹿 +麀 +麁 +麂 +麃 +麅 +麆 +麇 +麈 +麉 +麊 +麋 +麌 +麎 +麐 +麑 +麒 +麓 +麔 +麖 +麗 +麙 +麚 +麛 +麜 +麝 +麞 +麟 +麠 +麡 +麤 +麥 +麦 +麧 +麩 +麪 +麮 +麯 +麰 +麴 +麵 +麶 +麷 +麸 +麹 +麺 +麻 +麼 +麽 +麾 +麿 +黀 +黁 +黂 +黃 +黄 +黇 +黈 +黉 +黌 +黍 +黎 +黏 +黐 +黑 +黒 +黓 +黔 +黕 +黖 +默 +黙 +黚 +黛 +黜 +黝 +點 +黟 +黠 +黡 +黢 +黤 +黥 +黧 +黨 +黩 +黪 +黫 +黭 +黮 +黯 +黰 +黲 +黳 +黴 +黵 +黶 +黷 +黹 +黺 +黻 +黼 +黽 +黾 +黿 +鼀 +鼁 +鼂 +鼃 +鼆 +鼇 +鼈 +鼉 +鼊 +鼋 +鼍 +鼎 +鼏 +鼐 +鼒 +鼓 +鼕 +鼖 +鼗 +鼘 +鼙 +鼛 +鼜 +鼠 +鼢 +鼣 +鼤 +鼥 +鼨 +鼩 +鼪 +鼫 +鼬 +鼭 +鼮 +鼯 +鼰 +鼱 +鼲 +鼳 +鼴 +鼵 +鼶 +鼷 +鼸 +鼹 +鼻 +鼽 +鼾 +齀 +齁 +齂 +齃 +齇 +齉 +齊 +齋 +齌 +齍 +齎 +齏 +齐 +齑 +齒 +齔 +齕 +齖 +齗 +齘 +齙 +齛 +齜 +齝 +齞 +齟 +齠 +齡 +齢 +齣 +齤 +齥 +齦 +齧 +齩 +齪 +齫 +齬 +齮 +齯 +齰 +齱 +齲 +齴 +齵 +齶 +齷 +齸 +齹 +齺 +齻 +齾 +齿 +龀 +龁 +龂 +龃 +龄 +龅 +龆 +龇 +龈 +龉 +龊 +龋 +龌 +龍 +龎 +龐 +龑 +龒 +龔 +龕 +龗 +龙 +龚 +龛 +龜 +龝 +龟 +龠 +龢 +龤 +鿍 +鿎 +鿏 +郎 +凉 +︽ +︾ +﹏ +﹥ +﹪ +! +# +% +& +( +) ++ +, +- +. +/ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +: +; += +? +@ +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +X +Y +Z +a +b +c +d +e +f +g +h +i +j +k +l +m +n +o +p +q +r +s +t +u +v +w +x +y +z +| +~ +・ +ヲ +ァ +ィ +ゥ +ェ +ォ +ャ +ュ +ョ +ッ +ア +イ +ウ +エ +オ +カ +キ +ク +ケ +コ +サ +シ +ス +セ +ソ +タ +チ +ツ +テ +ト +ナ +ニ +ヌ +ネ +ノ +ハ +ヒ +フ +ヘ +ホ +マ +ミ +ム +メ +モ +ヤ +ユ +ヨ +ラ +リ +ル +レ +ロ +ワ +ン +゙ +゚ +¥ +𠅤 +𠙶 +𠳐 +𠴰 +𡎚 +𡐓 +𡑍 +𡚁 +𣇉 +𣗋 +𣲗 +𣲘 +𣸣 +𤋮 +𤧛 +𤩽 +𤫉 +𤺥 +𥔲 +𥕢 +𥖨 +𥻗 +𦈡 +𦍑 +𦒍 +𦙶 +𦝼 +𦭜 +𦰡 +𧿹 +𨐈 +𨙸 +𨚕 +𨟠 +𨭉 +𨱇 +𨱏 +𨱑 +𨱔 +𨺙 +𩓐 +𩽾 +𩾃 +𩾌 +𪟝 +𪣻 +𪤗 +𪨰 +𪨶 +𪩘 +𪾢 +𫄧 +𫄨 +𫄷 +𫄸 +𫇭 +𫌀 +𫍣 +𫍯 +𫍲 +𫍽 +𫐄 +𫐐 +𫐓 +𫑡 +𫓧 +𫓯 +𫓶 +𫓹 +𫔍 +𫔎 +𫔶 +𫖮 +𫖯 +𫖳 +𫗧 +𫗴 +𫘜 +𫘝 +𫘦 +𫘧 +𫘨 +𫘪 +𫘬 +𫚕 +𫚖 +𫚭 +𫛭 +𫞩 +𫟅 +𫟦 +𫟹 +𫟼 +𫠆 +𫠊 +𫠜 +𫢸 +𫫇 +𫭟 +𫭢 +𫭼 +𫮃 +𫰛 +𫵷 +𫶇 +𫷷 +𫸩 +𬀩 +𬀪 +𬂩 +𬃊 +𬇕 +𬇙 +𬇹 +𬉼 +𬊈 +𬊤 +𬌗 +𬍛 +𬍡 +𬍤 +𬒈 +𬒔 +𬒗 +𬕂 +𬘓 +𬘘 +𬘡 +𬘩 +𬘫 +𬘬 +𬘭 +𬘯 +𬙂 +𬙊 +𬙋 +𬜬 +𬜯 +𬞟 +𬟁 +𬟽 +𬣙 +𬣞 +𬣡 +𬣳 +𬤇 +𬤊 +𬤝 +𬨂 +𬨎 +𬩽 +𬪩 +𬬩 +𬬭 +𬬮 +𬬱 +𬬸 +𬬹 +𬬻 +𬬿 +𬭁 +𬭊 +𬭎 +𬭚 +𬭛 +𬭤 +𬭩 +𬭬 +𬭯 +𬭳 +𬭶 +𬭸 +𬭼 +𬮱 +𬮿 +𬯀 +𬯎 +𬱖 +𬱟 +𬳵 +𬳶 +𬳽 +𬳿 +𬴂 +𬴃 +𬴊 +𬶋 +𬶍 +𬶏 +𬶐 +𬶟 +𬶠 +𬶨 +𬶭 +𬶮 +𬷕 +𬸘 +𬸚 +𬸣 +𬸦 +𬸪 +𬹼 +𬺈 +𬺓 +🀄 +🃏 +🅰 +🅱 +🅾 +🅿 +🆎 +🆑 +🆒 +🆓 +🆔 +🆕 +🆖 +🆗 +🆘 +🆙 +🆚 +🇨 +🇩 +🇪 +🇫 +🇬 +🇮 +🇯 +🇰 +🇷 +🇺 +🈁 +🌀 +🌁 +🌂 +🌃 +🌄 +🌅 +🌆 +🌇 +🌈 +🌉 +🌊 +🌋 +🌌 +🌍 +🌎 +🌏 +🌐 +🌑 +🌒 +🌓 +🌔 +🌕 +🌖 +🌗 +🌘 +🌙 +🌚 +🌛 +🌜 +🌝 +🌞 +🌟 +🌠 +🌰 +🌱 +🌲 +🌳 +🌴 +🌵 +🌷 +🌸 +🌹 +🌺 +🌻 +🌼 +🌽 +🌾 +🌿 +🍀 +🍁 +🍂 +🍃 +🍄 +🍅 +🍆 +🍇 +🍈 +🍉 +🍊 +🍋 +🍌 +🍍 +🍎 +🍏 +🍐 +🍑 +🍒 +🍓 +🍔 +🍕 +🍖 +🍗 +🍘 +🍙 +🍚 +🍛 +🍜 +🍝 +🍞 +🍟 +🍠 +🍡 +🍢 +🍣 +🍤 +🍥 +🍦 +🍧 +🍨 +🍩 +🍪 +🍫 +🍬 +🍭 +🍮 +🍯 +🍰 +🍱 +🍲 +🍳 +🍴 +🍵 +🍶 +🍷 +🍸 +🍹 +🍺 +🍻 +🍼 +🎀 +🎁 +🎂 +🎃 +🎄 +🎅 +🎆 +🎇 +🎈 +🎉 +🎊 +🎋 +🎌 +🎍 +🎎 +🎏 +🎐 +🎑 +🎒 +🎓 +🎠 +🎡 +🎢 +🎣 +🎤 +🎥 +🎦 +🎧 +🎨 +🎩 +🎪 +🎫 +🎬 +🎭 +🎮 +🎯 +🎰 +🎱 +🎲 +🎳 +🎴 +🎵 +🎶 +🎷 +🎸 +🎹 +🎺 +🎻 +🎼 +🎽 +🎾 +🎿 +🏀 +🏁 +🏂 +🏃 +🏄 +🏆 +🏇 +🏈 +🏉 +🏊 +🏠 +🏡 +🏢 +🏣 +🏤 +🏥 +🏦 +🏧 +🏨 +🏩 +🏪 +🏫 +🏬 +🏭 +🏮 +🏯 +🏰 +🐀 +🐁 +🐂 +🐃 +🐄 +🐅 +🐆 +🐇 +🐈 +🐉 +🐊 +🐋 +🐌 +🐍 +🐎 +🐏 +🐐 +🐑 +🐒 +🐓 +🐔 +🐕 +🐖 +🐗 +🐘 +🐙 +🐚 +🐛 +🐜 +🐝 +🐞 +🐟 +🐠 +🐡 +🐢 +🐣 +🐤 +🐥 +🐦 +🐧 +🐨 +🐩 +🐪 +🐫 +🐬 +🐭 +🐮 +🐯 +🐰 +🐱 +🐲 +🐳 +🐴 +🐵 +🐶 +🐷 +🐸 +🐹 +🐺 +🐻 +🐼 +🐽 +🐾 +👀 +👂 +👃 +👄 +👅 +👆 +👇 +👈 +👉 +👊 +👋 +👌 +👍 +👎 +👏 +👐 +👑 +👒 +👓 +👔 +👕 +👖 +👗 +👘 +👙 +👚 +👛 +👜 +👝 +👞 +👟 +👠 +👡 +👢 +👣 +👤 +👥 +👦 +👧 +👨 +👩 +👪 +👫 +👬 +👭 +👮 +👯 +👰 +👱 +👲 +👳 +👴 +👵 +👶 +👷 +👸 +👹 +👺 +👻 +👼 +👽 +👾 +👿 +💀 +💁 +💂 +💃 +💄 +💅 +💆 +💇 +💈 +💉 +💊 +💋 +💌 +💍 +💎 +💏 +💐 +💑 +💒 +💓 +💔 +💕 +💖 +💗 +💘 +💙 +💚 +💛 +💜 +💝 +💞 +💟 +💠 +💡 +💢 +💣 +💤 +💥 +💦 +💧 +💨 +💩 +💪 +💫 +💬 +💭 +💮 +💯 +💰 +💲 +💳 +💴 +💵 +💶 +💷 +💸 +💹 +💺 +💻 +💼 +💽 +💾 +💿 +📀 +📁 +📂 +📃 +📄 +📅 +📆 +📇 +📈 +📉 +📊 +📋 +📌 +📍 +📎 +📏 +📐 +📑 +📒 +📓 +📔 +📕 +📖 +📗 +📘 +📙 +📚 +📛 +📜 +📝 +📞 +📟 +📠 +📡 +📢 +📣 +📤 +📥 +📦 +📧 +📨 +📩 +📪 +📫 +📬 +📭 +📮 +📯 +📰 +📱 +📲 +📳 +📴 +📵 +📶 +📷 +📹 +📺 +📻 +📼 +🔀 +🔁 +🔂 +🔃 +🔄 +🔅 +🔆 +🔇 +🔉 +🔊 +🔋 +🔌 +🔍 +🔎 +🔏 +🔐 +🔑 +🔒 +🔓 +🔔 +🔕 +🔖 +🔗 +🔘 +🔙 +🔚 +🔛 +🔜 +🔝 +🔞 +🔟 +🔠 +🔡 +🔢 +🔣 +🔤 +🔥 +🔦 +🔧 +🔨 +🔩 +🔪 +🔫 +🔬 +🔭 +🔮 +🔯 +🔰 +🔱 +🔲 +🔳 +🔴 +🔵 +🔶 +🔷 +🔸 +🔹 +🔺 +🔻 +🔼 +🔽 +🕐 +🕑 +🕒 +🕓 +🕔 +🕕 +🕖 +🕗 +🕘 +🕙 +🕚 +🕛 +🕜 +🕝 +🕞 +🕟 +🕠 +🕡 +🕢 +🕣 +🕤 +🕥 +🕦 +🕧 +🗻 +🗼 +🗽 +🗾 +🗿 +😀 +😁 +😂 +😃 +😄 +😅 +😆 +😇 +😈 +😉 +😊 +😋 +😌 +😍 +😎 +😏 +😐 +😑 +😒 +😓 +😔 +😕 +😖 +😗 +😘 +😙 +😚 +😛 +😜 +😝 +😞 +😟 +😠 +😡 +😢 +😣 +😤 +😥 +😦 +😧 +😨 +😩 +😪 +😫 +😬 +😭 +😮 +😯 +😰 +😱 +😲 +😳 +😴 +😵 +😶 +😷 +😸 +😹 +😺 +😻 +😼 +😽 +😾 +😿 +🙀 +🙅 +🙆 +🙇 +🙈 +🙉 +🙊 +🙋 +🙌 +🙍 +🙎 +🙏 +🚀 +🚁 +🚂 +🚃 +🚄 +🚅 +🚆 +🚇 +🚈 +🚉 +🚊 +🚌 +🚍 +🚎 +🚏 +🚐 +🚑 +🚒 +🚓 +🚔 +🚕 +🚖 +🚗 +🚘 +🚙 +🚚 +🚛 +🚜 +🚝 +🚞 +🚟 +🚠 +🚡 +🚢 +🚣 +🚤 +🚥 +🚦 +🚧 +🚨 +🚩 +🚪 +🚫 +🚬 +🚭 +🚮 +🚯 +🚰 +🚱 +🚲 +🚳 +🚴 +🚵 +🚶 +🚷 +🚸 +🚹 +🚺 +🚻 +🚼 +🚽 +🚾 +🚿 +🛀 +🛁 +🛂 +🛃 +🛄 +🛅 diff --git a/refresh_codegraph.ps1 b/refresh_codegraph.ps1 new file mode 100644 index 0000000..958e518 --- /dev/null +++ b/refresh_codegraph.ps1 @@ -0,0 +1,63 @@ +param( + [switch]$Init, + [switch]$Force +) + +$ErrorActionPreference = "Stop" + +function Install-CodeGraph { + Write-Host "[信息] 正在安装 codegraph…" -ForegroundColor Cyan + + $npm = Get-Command npm -ErrorAction SilentlyContinue + if ($npm) { + Write-Host "[信息] 通过 npm 安装 @colbymchenry/codegraph…" -ForegroundColor Cyan + npm install -g @colbymchenry/codegraph + if ($LASTEXITCODE -eq 0) { + Write-Host "[完成] codegraph 安装成功" -ForegroundColor Green + return + } + Write-Host "[警告] npm 安装失败,尝试使用官方安装脚本…" -ForegroundColor Yellow + } + + Write-Host "[信息] 通过官方脚本安装…" -ForegroundColor Cyan + irm https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.ps1 | iex + if ($LASTEXITCODE -ne 0) { throw "codegraph 安装失败" } + Write-Host "[完成] codegraph 安装成功" -ForegroundColor Green +} + +try { + $codegraph = Get-Command codegraph -ErrorAction Stop + Write-Host "[正常] 已检测到 codegraph CLI" -ForegroundColor Green +} catch { + Write-Host "[提示] 未找到 codegraph,将自动安装…" -ForegroundColor Yellow + Install-CodeGraph +} + +if (-not (Test-Path ".\.codegraph")) { + Write-Host "[警告] 未找到 .codegraph/ 目录,正在执行初始化…" -ForegroundColor Yellow + codegraph init -i + if ($LASTEXITCODE -ne 0) { throw "codegraph init 失败" } + Write-Host "[完成] 初始化 + 索引构建完毕" -ForegroundColor Green +} elseif ($Init) { + Write-Host "[信息] 正在重新初始化…" -ForegroundColor Cyan + codegraph init -i + if ($LASTEXITCODE -ne 0) { throw "codegraph init 失败" } + Write-Host "[完成] 重新初始化 + 索引构建完毕" -ForegroundColor Green +} elseif ($Force) { + Write-Host "[信息] 正在执行全量重建索引…" -ForegroundColor Cyan + codegraph index --force + if ($LASTEXITCODE -ne 0) { throw "codegraph index --force 失败" } + Write-Host "[完成] 全量重建索引完毕" -ForegroundColor Green +} else { + Write-Host "[信息] 正在执行增量同步…" -ForegroundColor Cyan + codegraph sync + if ($LASTEXITCODE -ne 0) { throw "codegraph sync 失败" } + Write-Host "[完成] 增量同步完毕" -ForegroundColor Green +} + +Write-Host "`n--- CodeGraph 状态 ---" -ForegroundColor Cyan +codegraph status + +if ($LASTEXITCODE -ne 0) { + Write-Host "[警告] codegraph status 返回异常" -ForegroundColor Yellow +}