如何将带圆圈的数字转换为数字? (①到1)

How to convert circled numbers to numbers ? (① to 1)

我想从日文文本的 OCR 识别后收到的字符串中转换数字。

例如,当我提取日期时:

③① 年 ⑫ 月 ①③ 日

我想将其转换为:

31 年 12 月 13 日

实现它的最佳方法是什么?

假设您已经对问题中带圆圈的数字进行了 OCR 文本识别,那么简单的文本替换就足够了。以下是您在 Python 中的操作方式:

def uncircle(s):
    for i in range(1, 21):
        s = s.replace(chr(0x245f + i), str(i))
    return s.replace('\u24ea', '0')

圆圈数字 1 到 20 是 Unicode 代码点 0x2460 到 0x2473,圆圈数字 0 是 Unicode 代码点 0x24ea。

我会用 unicodedata

import unicodedata
print(unicodedata.normalize("NFKC","③① 年 ⑫ 月 ①③ 日"))

结果是这样的,

31 年 12 月 13 日

这也会转换日文数字的其他变体,全角数字。

import unicodedata
print(unicodedata.normalize("NFKC","123①②③123"))

123123123