如何将带圆圈的数字转换为数字? (①到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
我想从日文文本的 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