Как вычислить ASCII-математическое выражение в JavaScript?

Привет всем! Я работаю над веб-проектом, который распознает математические задачи с изображений. Мой OCR выдает формулы в формате ASCII Math, и теперь мне нужно их как-то вычислять.

Например, есть такое выражение:

2(3)/(7)-:-1(2)/(4)

Как бы его посчитать? Я пробовал библиотеку evaluatex, но она выдает ошибку:

Не удается распознать токен

Может, кто-нибудь знает хорошую библиотеку для этого? Или как исправить ошибку в evaluatex? Буду благодарен за любую помощь!

Вот что я пытался сделать:

evaluatex("(2)/(7)-:(2)/(4)")();

Спасибо заранее!

Для таких выражений я бы порекомендовал библиотеку math.js. Она отлично справляется с ASCII-форматом и поддерживает сложные выражения. Вот пример использования:

import * as math from 'mathjs';

const expr = '2(3)/(7)-1(2)/(4)';
const result = math.evaluate(expr);
console.log(result); // Выведет результат вычисления

Math.js также позволяет определять собственные функции и константы, что может пригодиться для более сложных кейсов. Проверьте документацию, там много полезного.

Для таких выражений можно попробовать библиотеку expr-eval. Она довольно простая, но хорошо работает с базовыми операциями. Вот пример:

const Parser = require(‘expr-eval’).Parser;
const parser = new Parser();
const expr = ‘2*(3/7) - 1*(2/4)’;
const result = parser.evaluate(expr);
console.log(result);

Только учти, что придется немного подправить формат выражения. Звездочки для умножения обязательны. Удачи с проектом!

а вот я бы посоветовал посмотреть в сторону библиотеки nerdamer. она довольно мощная и умеет работать с символьными выражениями. вот как можно использовать ее для твоего примера:

const nerdamer = require(‘nerdamer’);
const expr = ‘2(3)/(7)-1(2)/(4)’;
const result = nerdamer(expr).evaluate();
console.log(result.text());

nerdamer умеет упрощать выражения, решать уравнения и даже работать с матрицами. может пригодиться если твой проект будет расширяться. главное убедись что формат ascii math совпадает с тем что ожидает библиотека