็ฐๅขใฏๆจช็ใใฆ llama.cpp ใฎ llama-cli ใPythonใใ็ดๆฅๅฉใๅฝขใซใใฆใใพใใใกใใใจๆธใๅ ดๅใฏ llama-server ใ llama-cpp-python ใ PyTorch ใไฝฟใใจ่ฏใใงใใใใ
ไปๅไฝฟใใขใใซใฏsurya-2๏ผๅนณไปฎๅ๏ผใจHunyuanOCR๏ผๆผขๅญใใฎไป๏ผใงใใ
https://huggingface.co/datalab-to/surya-ocr-2-gguf/tree/main
https://huggingface.co/ggml-org/HunyuanOCR-GGUF/tree/main
ใใฃใจๆฅๆฌ่ชใซ็นๅใใOCRใขใใซใใใใพใ๏ผNDLOCR ใ Sarashina2.2-OCR ใชใฉ๏ผใใๅฐๅ ฅใ็ฐกๅใงใฏ็กใใใไปๅใฏ llama.cpp ใงๅใใใฎใ้ธใณใพใใใ
ในใฏใชใใใฏ่ช่ญๅใไธใใใใ ImageMagick ๏ผ2ใใผใธใ1ใใผใธใซ๏ผใจ deskew_HT๏ผNDLOCR็จ่ณๆ็ปๅใฎๅพใ่ฃๆญฃใขใธใฅใผใซ๏ผใซใไพๅญใใฆใพใใ
https://github.com/ndl-lab/deskew_HT
import unicodedata
from difflib import SequenceMatcher
import sys
if len(sys.argv) < 2:
print("python my_ocr.py <img path>")
exit()
img_path = sys.argv[1]
llama_cli = "/home/xxx/data/llama.cpp/build/bin/llama-cli"
# https://github.com/datalab-to/surya/blob/11d18847e8b8c17fd55e254e3e5c44b3fed5c87e/surya/inference/prompts.py#L82
prompt1 = """OCR this image to HTML. Each block is a div with data-label and data-bbox (x0 y0 x1 y1, normalized 0-1000)."""
#prompt2 = "Extract all information from the main body of the document image and represent it in HTML format."
prompt2 = "Extract all."
model1_gguf = "/media/xxx/data/ocr/surya-2.gguf"
mmproj1_gguf = "/media/xxx/data/ocr/surya-2-mmproj.gguf"
model2_gguf = "/media/xxx/data/ocr/HunyuanOCR-bf16.gguf"
mmproj2_gguf = "/media/xxx/data/ocr/mmproj-HunyuanOCR-bf16.gguf"
import subprocess
# ImageMagickใงๅทฆๅณใซใถใฃใๅใ
subprocess.run(["convert", img_path, "-crop","2x1@", "+repage", img_path + "_%d.png"])
for n in range(2):
img_path_n = img_path + f"_{n}.png"
subprocess.run(["python3", "../deskew_HT/run_deskew.py", img_path_n,"-o", img_path_n])
# subprocess.run(["python3", "../deskew_HT/run_deskew.py", img_path_n,"-o", img_path_n]) # second deskew
result1 = subprocess.run([llama_cli, "-p", prompt1, "--image", img_path_n, "-m", model1_gguf,
"--mmproj", mmproj1_gguf, "--temp", "0", "--single-turn", "--log-disable", "--no-display-prompt",
"--simple-io", "-c", "8192"],
capture_output=True, text=True)
t = result1.stdout.find("Loaded media")
t = result1.stdout.find(">", t)
t = result1.stdout.find("\n", t)
r1 = result1.stdout[t:]
print(r1)
result2 = subprocess.run([llama_cli, "-p", prompt2, "--image", img_path_n, "-m", model2_gguf,
"--mmproj", mmproj2_gguf, "--temp", "0", "--single-turn", "--log-disable", "--no-display-prompt",
"--simple-io", "-c", "8192"],
capture_output=True, text=True)
t = result2.stdout.find("Loaded media")
t = result2.stdout.find(">", t)
t = result2.stdout.find("\n", t)
r2 = result2.stdout[t:]
r2 = r2.replace("\n", "")
print(r2)
def is_kana(c):
name = unicodedata.name(c, "")
return "HIRAGANA" in name or "KATAKANA" in name
def is_kanji(c):
name = unicodedata.name(c, "")
return "CJK UNIFIED IDEOGRAPH" in name
def merge_ocr(ocr_kanji, ocr_kana):
sm = SequenceMatcher(None, ocr_kanji.replace("ใถ", "ใต"), ocr_kana, autojunk=False)
result = []
for tag, i1, i2, j1, j2 in sm.get_opcodes():
if tag == "equal":
result.extend(ocr_kanji[i1:i2]) # ใใถใๅชๅ
continue
if tag == "replace":
a = ocr_kanji[i1:i2]
b = ocr_kana[j1:j2]
# ใใชใใญใใฏๅไฝใงๆฑใ
# ใพใใใใชๅดใๅชๅ
็ใซๆก็จใ
if any(is_kana(c) for c in b):
result.extend(b)
else:
result.extend(a)
continue
if tag == "delete":
result.extend(ocr_kanji[i1:i2])
continue
if tag == "insert":
result.extend(ocr_kana[j1:j2])
continue
return "".join(result)
print(merge_ocr(r2, r1))
ใในใ
ใในใใซไฝฟใฃใ็ปๅใฏๅฝ็ซๅฝไผๅณๆธ้คจใใธใฟใซใณใฌใฏใทใงใณใซใใใๆฐ็ทจๅพกไผฝ่ๅญใ๏ผ1901ๅนด๏ผๅ้ฒใฎใ็ฆๅฏ่ๅญใใฎ้ซ่งฃๅๅบฆJPGใงใใ
https://dl.ndl.go.jp/pid/992342/1/10
OCR็ตๆใฎHTMLใฟใฐใจๆน่กใฏ้คๅปใใฆใใใพใใๆฌๅผงๅ ใฏๆฌ ใใฆใๆๅญใงใใใใใใฎไธ่ถณใฏๅคใใใใใไธๆฆ็ก่ฆใใฆใใพใใ
| ใขใใซ | ๆณจ้ใฎOCR็ตๆ | ่ชคใใญใใฏๆฐ๏ผๆงๅญไฝโๆฐๅญไฝใ้คใ๏ผ |
|---|---|---|
| ๆญฃ่งฃ | ๅ้ ญใฎไธๅฅใฏใไธ็ฏใฎ็ถฑ้ ใชใใ ใใพใ ๅ ถ่ใฎไฝไบใใใ่ชฌ็ ดใใใ่ใฎๅญใ็ฌใฎๅญใไธใใ้ ๅฆใชใใ ไบใฎใใชใคใใฎใฏไบ็ฉใใใตใใใชใคใใฎใฏ็จฎใค็ฉใฎ็พฉใชใใๆฅๆฌ็ดใซใฏใๆฐด็ฐใฎ็จฎๅญใใใใใใ ไธๆฎตใ๏จๅฏใ๏จๅๅฏๆใๅฏซใใฆใๅพๆฎตใฎๅฐใใชใใ ็ฏๅฐใฏใๅใ้ซใ็ฏใใใๅฃๅขปใใใตใ๏ฉๅกใฎ๏งใชใใ | 0 |
| NDLOCR-Lite๏ผๅ่็จ๏ผ | ๅ้ ญใฎไธๅฅใฏใ๏ผไธ๏ผ็ฏใฎ็ถฑ้ ใชใใ1-ใใพใ ๅ ถ่ใฎไฝไบ้ใฎๅญใ็ฌใฎๅญใไธใใ ้ ๅฆใชใใ[...] ไบใฎใใชใคใใฎใฏไบ็ฉใใใตใใใชใคใใฎใฐใ็จฎใค็ฉใฎ็พฉใชใใๆฅๆฌ็ดใซใฏใๆฐด็ฐใฎ็จฎๅญใใใใใใไธๆฎตใ๏จๅฏใ๏จๅๅฏๆใๅฏซใใฆใ๏ผๅพ๏ผๆฎตใฎๅฐใใชใใ็ฏๅฐใฏใๅใ้ซใ็ฏใใใๅฃๅขปใใใตใ๏ฉๅกใฎ๏งใชใใ | 4 |
| surya-2 | ๅ้ ญใฎไธๅฅใฏใไธ็ฏใฎ็ถฑ้ ใชใใไธใใพใ ๅ ถ่ใฎไฝไบใใใ่ชฌ็ ดใใใ๏ผ่ใฎๅญใ็ฌใฎๅญใ๏ผไธใใ้ ๅฆใชใใไบใฎใใชใคใใฎใฏไบ็ฉใชใใตใใใชใคใใฎใฏ็จฎใค็ฉใฎ็พฉใชใใๆฅๆฌ็ดใซใฏใๆฐด็ฐใฎ็จฎๅญใใใใใใไธๆฎตใ็ฆๅฏใ็ฆๅ๏ผๅฏๆใๅฏซใใฆใๅพ๏ผๆฎตใฎๅฐใใชใใๅพ็ฏๅฐใฏใๅใ้ซใ็ฏใใใๅฃๅขปใใใตใ็ทดๅกใฎ้กใชใใ | 5 |
| HunyuanOCR | ๅ้ ญใฎไธๅฅใซไธ็ฏใฎ็ถฑ้ ใชใใใพใ ๅ ถ่ใฎไฝไบใใใ่ชฌ็ ดใใ่ใฎๅญ็ฌใฎๅญไธใ้ ๅฆใชใไบใฎใใชใคใใฎใฏไบ็ฉใชใใตใใชใคใใฎใฐ็จฎใค็ฉใฎ่ใชใๆฅๆฌ็ดใซใฏๆฐด็ฐใฎ็จฎไบใใใใใใไธๆฎต็ฆๅฏใ็ฆๅๅฏๆใๅฏซใใฆๅพๆฎตใฎๅฐ๏ผใ๏ผใชใ็ฏๅฐใฏๅใ้ซใ็ฏใใใๅฃๅพณใใใต็ทดๅกใฎ้กใชใ | 9 |
| ใใผใธ (Ours) | ๅ้ ญใฎไธๅฅใฏใไธ็ฏใฎ็ถฑ้ ใชใใไธใใพใ ๅ ถ่ใฎไฝไบใใใ่ชฌ็ ดใใ่ใฎๅญ็ฌใฎๅญไธใใ้ ๅฆใชใใไบใฎใใชใคใใฎใฏไบ็ฉใชใใตใใใชใคใใฎใฏ็จฎใค็ฉใฎ่ใชใใๆฅๆฌ็ดใซใฏใๆฐด็ฐใฎ็จฎๅญใใใใใใไธๆฎตใ็ฆๅฏใ็ฆๅๅฏๆใๅฏซใใฆๅพๆฎตใฎๅฐใใชใใๅพ็ฏๅฐใฏใๅใ้ซใ็ฏใใใๅฃๅขปใใใตใ็ทดๅกใฎ้กใชใใ | 4 |
ไธ่จใฎๅนณไปฎๅใฎ่ชคๅญๆฐใฏ็ด็ฉใฎ่ชคๅญ๏ผใฑใจใใฎๆททๅ๏ผใ้คใใพใใ
| ใขใใซ | ๆฌๆใฎOCR็ตๆ | ๅนณไปฎๅใฎ่ชคๅญๆฐ | ๆผขๅญใฎ่ชคๅญๆฐ๏ผๆงๅญไฝโๆฐๅญไฝใ้คใ๏ผ |
|---|---|---|---|
| ๆญฃ่งฃ | ไบบใฏ่บซใซๆใใฌๆๅ ฑใใใใใใพใใใใจใซใชใไพใใใใใ็ฆๅฏใฎ็น้จใจใฆใ้ท่ ไธไบบไพใใใใใใใชใ้ๅปใฎๅฎฟ็ทฃใซใใ่บซใซ็ใใคใใใ่ใฒใจใคใใตใใฒใใใใใชใใฏใใใซๅฅ็นใใใใฏใใใฏใใใใใซๅใ็ผใใฆใไธใฎไบบใ๏จใฎๅฆใใซใๆใฒใใใๅ ถ่ใใใพใใใใถใใใใฐใไธไธญไธใฎไบบใพใงใใใใ่ใ็ฅใใฆ็ฌใใใใปใใใจใชใใใใฐใใใฎใฅใใใใปใใๆนใซใใใใใใใใใฆ่ใใใฏใใพใใใใใจใชใใใชใใใใใใฐๅฏใใใไธใซๅฏใฟๆจใใใไธใซใใฎใใฟใฆใๆฃใซๆฃใใใใใฒใ่ใซ่ใใใฆใใไบใฎใใชใคใใฎใ่ใใใใฆใๅบญใซใฟใกใฑใใใใใใ้ฃใซใปใใใใฎ่คๅคชใจใฆใใใจใพใฅใใใใฎไพใใใใฏ็น้จใซใฒใใใธใฆๆๅคใฎ็ใ็ซใซ็ตถใใใจใคใฎใฟใก่ใใใใคใใ็ฏๅฐใซใใใฌๆดๅฃใใๆ ขๅนใชใใฌ่ฆใใใซๅคๅฏใฎๅบใใใใใใญใคใใ่ปใใใใใใใใฎใใใซใใผใกใจใใฆใใใพใๅฏใใฎ้ขจใๅ ฅใใใใๅคใฏใใใพใใ้บปใฎ่กฃใตใใณใฆใใใถใๅๆใซใฆ | 0 | 0 |
| NDLOCR-Lite๏ผๅ่็จ๏ผ | ไบบใฏ่บซใซๆใใฌๆๅ ฑใใใใใใพใใใใจใซใชใไพใใใใใ็ฆๅฏใฎ็น้จใจใฆใ้ท่ ไธไบบไพใใใใใใใชใ้ๅปใฎๅฎฟ็ธใซใใ่บซใซ็ใใคใใใ่ใฒใจใคใใตใใฒใใใใใชใใฏใใใซๅฅ็นใใใใฏใใใฏใใใใใซๅใ็ผใใฆใไธใฎไบบใ๏จใฎๅฆใใซใๆใฒใใใๅ ถ่ใใใพใใใใถใใใใฐไธไธญไธใฎไบบใพใงใใใใ่ใ็ฅใใฆ็ฌใใใใปใใใจใชใใใใฐใใใฎใฅใใใใปใใๆนใซใใใใใใใใใฆ่ใใใฏใใพใใใใใจใชใใใชใใใใใใฐๅฏใใใไธใซๅฏใฟใๆจใใใไธใซใใฎใใฟใฆใๆฃใซๆฃใใใใใฒใ่ใซ่ใใใฆใฝไบใฎใใชใคใใฎใ่ใใใใฆใๅบญใซใฟใกใณใตใใใใใใ้ฃใซใปใใใใฎ่คๅคชใจใฆใใใจใพใฅใใใใฎไพใใใใฏ็น้จใซใฒใใใธใฆๆๅคใฎ็ใ็ซใซ็ตถใใใจใคใฎใฟใก่ใใใใคใใ็ฏๅฐใซใใใฌๆดๅฃใใไฟๅนใชใใฌ่ฆใใใซใๅคๅฏใฎๅบใใใใใใญใคใใ่ปใใใใใใใใฎใใใซใใผใกใจใใฆใใใพใๅฏใใฎ้ขจใๅ ฅใใใใๅคใฏใใใพใใ้บปใฎ่กฃใตใใณใฆใใใถใๅๆใซใฆ | 0 | 1 |
| surya-2 | ไบบใฏ่บซใซๆใใฌๆๅ ฑใใใใใใพใใใใจใซใชใไพใใใใใ็ฆๅฏใฎ็น้จใจใฆใ้ท่ ไธไบบไพใใใใใใใชใ้ๅปใฎๅฎฟ็ธใซใใ่บซใซ็ใใคใใใ่ใฒใจใคใใตใใฒใใใใใชใใฏใใใซๅฅ็นใใใใฏใใใฏใใใใใซๅใ็ผใใฆใไธใฎไบบใ็ฅใฎๅฆใใซใๆใฒใใใๅ ถ่ใใใพใใใใตใใใใฐใไธไธญไธใฎไบบใพใงใใใใ่ใ็ฅใใฆ็ฌใใใใปใใใจใชใใใใฐใใใฎใฅใใใใปใใๆนใซใใใใใใใใใฆ่ใใใฏใใพใใใใใจใชใใใชใใใใใใฐๅฏใใใไธใซๅฏใฟใๆจใใใไธใซใใฎใใฟใฆใๆฃใซๆฃใใใใใฒใ่ใซ่ใใใฆ๏ผใ๏ผใไบใฎใใชใคใใฎใ่ใใใใฆใๅบญใซใฟใกใใใใใใใ้ฃใซใปใใใใฎ่คๅคชใจใฆใใใจใพใฅใใใใฎไพใใใใฏ็น้จใซใฒใใใธใฆๆๅคใฎ็ใ็ซใซ็ตถใใใจใคใฎใฟใก่ใใใใค๏ผใ๏ผใ็ฏๅฐใซใใใฌๆดๅฃใใๆ ขๆฎใชใใฌ้ทนใใใซๅคๅฏใฎๅบใใใใใใญใค๏ผใ๏ผใ่ปใใใใใใใใฎใใใซใใผใกใจใใฆใใใพใๅฏใใฎ้ขจใๅ ฅใใใใๅคใฏใใใพใใ้บปใฎ่กฃใตใใณใฆใใใตใๅๆใซใฆ | 3 | 2 |
| HunyuanOCR | ไบบใฏ่บซใซๆใใฎๆๅ ฑใใใใใใพใใใใซใชใไพใใใใ็ฆๅฏใฎ็น้จใฉใฆ้ท่ ไธไบบไพใใใใใใชใ้ๅปใฎๅฎฟ็ทฃใซใ่บซใซ็ใใคใใใ่ใฒใฉใคใใตใใฒใใใใชใใฏใใใซๅฅ็นใใใใฏใใฏใใใใใซๅใ็ผใใฆไธใฎไบบ็ฅใฎๅฆใใซใๆใฒใใๅ ถ่ใใใพใใใใถใใใใฐไธไธญไธใฎไบบใพใงใใใ่ใ็ฅใใฆ็ฌใใใใปใใใฉใชใใใใฐใใฎใฅใใใใปใใๆนใซใใใใใใใใฆ่ใใใฏใใพใใใใใฉใช๏ผใ๏ผใใชใใใใใฐๅฏใใใไธใซๅฏใฟๆฅฝใใใไธใซใใฎใใฟใฆๆฃใซๆฃใใใใใฒ่ใซ่ใใใฆ๏ผใ๏ผไบใฎใใชใคใใฎ่ใใใใฆๅบญใซใฟใก๏ผใฑ๏ผใใใใใ้ฃใซใปใใใใฎ่คๅคชใฉใฆใใฉใพใฅใใใใฎไพใใใฏ็น้จใซใฒใใใธใฆๆๅคใฎ็ใ็ชใซ็ตถใใฉใคใฎใฟใก่ใใใใค๏ผใ๏ผ็ฏๅฐใซใใใฌๆดๅฃใๆ ขๅนใชใใฌ่ฆใใใซๅคๅฏใฎๅบใใใใใใญใค๏ผใ๏ผ่ปใใใใใใใฎใใใซใใผใกใฉใใฆใใพใๅฏใใฎ้ขจใๅ ฅใใใๅคใฏใใใพใใ้บปใฎ่กฃใตใใณใฆใใถใๅๆใซใฆ | 7 | 1 |
| ใใผใธ (Ours) | ไบบใฏ่บซใซๆใใฌๆๅ ฑใใใใใใพใใใใจใซใชใไพใใใใใ็ฆๅฏใฎ็น้จใจใฆใ้ท่ ไธไบบไพใใใใใใใชใ้ๅปใฎๅฎฟ็ทฃใซใใ่บซใซ็ใใคใใใ่ใฒใจใคใใตใใฒใใใใใชใใฏใใใซๅฅ็นใใใใฏใใใฏใใใใใซๅใ็ผใใฆใไธใฎไบบใ็ฅใฎๅฆใใซใๆใฒใใใๅ ถ่ใใใพใใใใถใใใใฐใไธไธญไธใฎไบบใพใงใใใใ่ใ็ฅใใฆ็ฌใใใใปใใใจใชใใใใฐใใใฎใฅใใใใปใใๆนใซใใใใใใใใใฆ่ใใใฏใใพใใใใใจใชใใใชใใใใใใฐๅฏใใใไธใซๅฏใฟๆฅฝใใใไธใซใใฎใใฟใฆใๆฃใซๆฃใใใใใฒใ่ใซ่ใใใฆ๏ผใ๏ผใไบใฎใใชใคใใฎใ่ใใใใฆใๅบญใซใฟใกใใใใใใใ้ฃใซใปใใใใฎ่คๅคชใจใฆใใใจใพใฅใใใใฎไพใใใใฏ็น้จใซใฒใใใธใฆๆๅคใฎ็ใ็ชใซ็ตถใใใจใคใฎใฟใก่ใใใใค๏ผใ๏ผใ็ฏๅฐใซใใใฌๆดๅฃใใๆ ขๅนใชใใฌ่ฆใใใซๅคๅฏใฎๅบใใใใใใญใค๏ผใ๏ผใ่ปใใใใใใใใฎใใใซใใผใกใจใใฆใใใพใๅฏใใฎ้ขจใๅ ฅใใใใๅคใฏใใใพใใ้บปใฎ่กฃใตใใณใฆใใใถใๅๆใซใฆ | 1 | 1 |
ใ ใใถ่ฏใใชใใพใใใใใพใ ใกใใฃใจๅพฎๅฆใงใใญโฆใ
2026ๅนด6ๆ25ๆฅ่ฟฝ่จ: NDLOCR-Liteใฎ็ตๆใ่ฟฝๅ ใๆญฃ่งฃใๆฐๅญไฝใซใชใฃใฆใ้จๅใไฟฎๆญฃ
Comments
Let's comment your feelings that are more than good