เป้าหมายของโปรเจ็กต์นี้คือการสร้างระบบการเรียนรู้ที่ใช้รูปภาพของสูตรทางคณิตศาสตร์และส่งกลับโค้ด LaTeX ที่เกี่ยวข้อง
ในการรันโมเดล คุณต้องมี Python 3.7+
หากคุณไม่ได้ติดตั้ง PyTorch ทำตามคำแนะนำของพวกเขาที่นี่
ติดตั้งแพ็คเกจ pix2tex
:
pip install "pix2tex[gui]"
จุดตรวจโมเดลจะถูกดาวน์โหลดโดยอัตโนมัติ
มีสามวิธีในการรับคำทำนายจากรูปภาพ
คุณสามารถใช้เครื่องมือบรรทัดคำสั่งได้โดยเรียก pix2tex
ที่นี่คุณสามารถแยกวิเคราะห์รูปภาพที่มีอยู่แล้วจากดิสก์และรูปภาพในคลิปบอร์ดของคุณได้
ขอบคุณ @katie-lim คุณสามารถใช้อินเทอร์เฟซผู้ใช้ที่ดีเพื่อขอรับการทำนายแบบจำลองได้อย่างรวดเร็ว เพียงเรียก GUI ด้วย latexocr
จากที่นี่ คุณสามารถจับภาพหน้าจอและโค้ดลาเท็กซ์ที่คาดการณ์ไว้จะแสดงผลโดยใช้ MathJax และคัดลอกไปยังคลิปบอร์ดของคุณ
ภายใต้ linux คุณสามารถใช้ GUI กับ gnome-screenshot
(ซึ่งมาพร้อมกับการรองรับหลายจอภาพ) หากติดตั้ง gnome-screenshot
ไว้ล่วงหน้า สำหรับ Wayland จะใช้ grim
และ slurp
เมื่อพร้อมใช้งานทั้งคู่ โปรดทราบว่า gnome-screenshot
เข้ากันไม่ได้กับผู้แต่ง Wayland ที่ใช้ wlroots เนื่องจาก gnome-screenshot
จะเป็นที่ต้องการเมื่อมีให้ใช้งาน คุณอาจต้องตั้งค่าตัวแปรสภาพแวดล้อม SCREENSHOT_TOOL
ให้ grim
ในกรณีนี้ (ค่าอื่นๆ ที่มีคือ gnome-screenshot
และ pil
)
หากโมเดลไม่แน่ใจเกี่ยวกับสิ่งที่อยู่ในรูปภาพ อาจให้ผลลัพธ์การคาดเดาที่แตกต่างออกไปทุกครั้งที่คุณคลิก "ลองอีกครั้ง" ด้วยพารามิเตอร์ temperature
คุณสามารถควบคุมพฤติกรรมนี้ได้ (อุณหภูมิต่ำจะให้ผลลัพธ์เดียวกัน)
คุณสามารถใช้ API ได้ สิ่งนี้มีการพึ่งพาเพิ่มเติม ติดตั้งผ่าน pip install -U "pix2tex[api]"
แล้วรัน
หลาม -m pix2tex.api.run
เพื่อเริ่มการสาธิต Streamlit ที่เชื่อมต่อกับ API ที่พอร์ต 8502 นอกจากนี้ยังมีอิมเมจนักเทียบท่าสำหรับ API: https://hub.docker.com/r/lukasblecher/pix2tex
docker pull lukasblecher/pix2tex:api docker run --rm -p 8502:8502 lukasblecher/pix2tex:api
หากต้องการรันการสาธิต streamlit ด้วย
docker run --rm -it -p 8501:8501 --entrypoint python lukasblecher/pix2tex:api pix2tex/api/run.py
และไปที่ http://localhost:8501/
ใช้จากภายใน Python
จากการนำเข้า PIL Imagefrom pix2tex.cli นำเข้า LatexOCRimg = Image.open('path/to/image.png')model = LatexOCR()print(model(img))
แบบจำลองนี้ทำงานได้ดีที่สุดกับรูปภาพที่มีความละเอียดน้อยกว่า นั่นเป็นเหตุผลที่ฉันเพิ่มขั้นตอนก่อนการประมวลผลโดยที่โครงข่ายประสาทเทียมอื่นทำนายความละเอียดที่เหมาะสมที่สุดของภาพที่นำเข้า โมเดลนี้จะปรับขนาดรูปภาพที่กำหนดเองโดยอัตโนมัติเพื่อให้คล้ายกับข้อมูลการฝึกมากที่สุด และเพิ่มประสิทธิภาพของรูปภาพที่พบในธรรมชาติ ยังไม่สมบูรณ์แบบและอาจไม่สามารถจัดการกับภาพขนาดใหญ่ได้อย่างเหมาะสม ดังนั้นอย่าซูมเข้าไปจนสุดก่อนที่จะถ่ายภาพ
ตรวจสอบผลลัพธ์อีกครั้งอย่างระมัดระวังเสมอ คุณสามารถลองทำซ้ำการทำนายด้วยความละเอียดอื่นได้หากคำตอบนั้นผิด
ต้องการใช้แพ็คเกจหรือไม่?
ฉันกำลังพยายามรวบรวมเอกสารตอนนี้
เยี่ยมชมที่นี่: https://pix2tex.readthedocs.io/
ติดตั้งการอ้างอิงสองสาม pip install "pix2tex[train]"
ก่อนอื่น เราต้องรวมภาพต่างๆ เข้ากับป้ายกำกับความจริงภาคพื้นดิน ฉันเขียนคลาสชุดข้อมูล (ซึ่งจำเป็นต้องปรับปรุงเพิ่มเติม) ซึ่งจะบันทึกเส้นทางสัมพัทธ์ไปยังรูปภาพด้วยโค้ด LaTeX ที่พวกเขาเรนเดอร์ด้วย หากต้องการสร้างไฟล์ดองชุดข้อมูลให้รัน
python -m pix2tex.dataset.dataset --equations path_to_textfile --images path_to_images --out dataset.pkl
หากต้องการใช้โทเค็นไนเซอร์ของคุณเอง ให้ส่งผ่าน --tokenizer
(ดูด้านล่าง)
คุณสามารถค้นหาข้อมูลการฝึกอบรมที่ฉันสร้างขึ้นบน Google Drive ได้เช่นกัน (formulae.zip - รูปภาพ, math.txt - ป้ายกำกับ) ทำซ้ำขั้นตอนสำหรับการตรวจสอบและทดสอบข้อมูล ทั้งหมดใช้ไฟล์ข้อความป้ายกำกับเดียวกัน
แก้ไขรายการ data
(และ valdata
) ในไฟล์ปรับแต่งเป็นไฟล์ .pkl
ที่สร้างขึ้นใหม่ เปลี่ยนไฮเปอร์พารามิเตอร์อื่นๆ หากคุณต้องการ ดู pix2tex/model/settings/config.yaml
สำหรับเทมเพลต
ตอนนี้เข้าสู่การฝึกซ้อมวิ่งจริง
python -m pix2tex.train --config path_to_config_file
หากคุณต้องการใช้ข้อมูลของคุณเอง คุณอาจสนใจสร้างโทเค็นไนเซอร์ของคุณเอง
python -m pix2tex.dataset.dataset --equations path_to_textfile --vocab-size 8000 --out tokenizer.json
อย่าลืมอัปเดตเส้นทางไปยังโทเค็นไนเซอร์ในไฟล์กำหนดค่าและตั้ง num_tokens
เป็นขนาดคำศัพท์ของคุณ
แบบจำลองประกอบด้วยตัวเข้ารหัส ViT [1] ที่มีแกนหลัก ResNet และตัวถอดรหัส Transformer [2]
คะแนน BLEU | ระยะการแก้ไขมาตรฐาน | ความแม่นยำของโทเค็น |
---|---|---|
0.88 | 0.10 | 0.60 |
เราต้องการข้อมูลที่จับคู่เพื่อให้เครือข่ายเรียนรู้ โชคดีที่มีโค้ด LaTeX มากมายบนอินเทอร์เน็ต เช่น วิกิพีเดีย arXiv นอกจากนี้เรายังใช้สูตรจากชุดข้อมูล im2latex-100k [3] ทั้งหมดสามารถพบได้ที่นี่
ในการเรนเดอร์คณิตศาสตร์ในฟอนต์ต่างๆ เราใช้ XeLaTeX สร้าง PDF และสุดท้ายแปลงเป็น PNG สำหรับขั้นตอนสุดท้าย เราจำเป็นต้องใช้เครื่องมือของบุคคลที่สาม:
XeLaTeX
ImageMagick พร้อม Ghostscript (สำหรับการแปลงไฟล์ PDF เป็น PNG)
Node.js เพื่อเรียกใช้ KaTeX (สำหรับการปรับโค้ด Latex ให้เป็นมาตรฐาน)
Python 3.7+ & การอ้างอิง (ระบุใน setup.py
)
คณิตศาสตร์ละตินสมัยใหม่, GFSNeohellenicMath.otf, คณิตศาสตร์อาสนะ, คณิตศาสตร์ XITS, คณิตศาสตร์แคมเบรีย
เพิ่มตัวชี้วัดการประเมินผลเพิ่มเติม
สร้าง GUI
เพิ่มการค้นหาลำแสง
รองรับสูตรที่เขียนด้วยลายมือ (เสร็จแล้ว ดูสมุดบันทึก colab การฝึกอบรม)
ลดขนาดโมเดล (การกลั่น)
ค้นหาไฮเปอร์พารามิเตอร์ที่เหมาะสมที่สุด
ปรับแต่งโครงสร้างโมเดล
แก้ไขการขูดข้อมูลและขูดข้อมูลเพิ่มเติม
ติดตามโมเดล (#2)
ยินดีบริจาคทุกรูปแบบ
รหัสที่นำมาและแก้ไขจาก lucidrains, rwightman, im2markup, arxiv_leaks, pkra: Mathjax, harupy: snipping tool
[1] รูปภาพมีขนาด 16x16 คำ
[2] ความเอาใจใส่คือสิ่งที่คุณต้องการ
[3] การสร้างภาพสู่มาร์กอัปด้วยความเอาใจใส่แบบหยาบถึงละเอียด