[Question]
  [
# The task
Given a multiline string with ascii art operators and numbers, parse the expression!
# Possible symbols
Numbers: (3x4)
```
 /
/|
 |
---
___
 _|
|
---
___
 _|
  |
---
| |
|_|
  |
  |
___
|_ 
  |
---
___
|_
| |
---
___
  /
 /
|
___
|_|
| |
---
___
|_|
  |
---
___
| |
| |
---
```
Operators: (3x3)
```
 | 
-+-
 |
---
\ /
 x
/ \
 .
---
 .
```
Braces: (1x4)
```
/
|
|
\
\
|
|
/
```
# Input
A multiline string with ascii art operators and numbers. Examples in the test cases.
# Output
The string of the parsed expression.
# Test cases
Input:
```
/ ___     ___ \     ___
|  _|  |    / |  .   _|
| |   -+-  /  | ---   |
\ ---  |  |   /  .  ---
```
Output: `(2+7)/3`
Input:
```
___      /      ___
|_|     /|  \ / |_ 
  | ---  |   x    |
---     --- / \ ---
```
Output: `9-1*5`
# Rules
1. Numbers will always be single-digit
2. Since operators are one symbol shorter than numbers, they are placed one symbol lower than numbers, leaving whitespace on top.
3. All symbols have a column of whitespace between them
4. This is a code-golf challenge, so lowest byte count wins!
  
[Answer]
# [APL (Dyalog Unicode)](https://www.dyalog.com/), ~~46~~ 44 bytes
```
'/(80-)63+92145*7'[16|43|25⊥¨(×⊆⊢)2⊥' .\'⍳⎕]
```
[Try it online!](https://tio.run/##XVDNSgMxEL7nKeaW1pqm@9Nqn8XIEpCKUKjHCnPysMpCRQ/iXRC86xPom@RF1pnMJq0NzM6XbyfffDP@dm2u7vx6c92Hp9ebTWifZyo8Pqx6bUfnMzNeVJNlWdTzkzN9USywrrCch@7j53P0@xa6NnTv45LuGqZOh90XiVz29L5fKYKkVkNZhd23ttA0DfDh7BJC@lIgXy2nKfOIkTETwyxhYwgBOgHDAxuridFK7dsVS26XmnFRatWgMJQcN@MKzIqw5Z8onaIs1bhB3gNph@5edK0MwcFGEz6M40NSWvnTQYVfsQ0Y5scYIJaiNeFkL2KXZyX2SAVyEeaIvBUUJ6Q1xrG2MtZ/FWYOI@1EKmHPY54keiFPOq89tC/@Dw "APL (Dyalog Unicode) – Try It Online")
`⎕` evaluated input, must be a character matrix
`' .\'⍳` replace spaces with 0, `.`s with 1, `\`s with 2, and everything else with 3
`2⊥` base-2 decode the columns
`(×⊆⊢)` split on zeroes
`25⊥¨` base-25 decode each group
`16|43|` mod 43, mod 16
`'/(80-)63+92145*7'[` `]` use as indices in the given string
[Answer]
# [Python 2](https://docs.python.org/2/), ~~154~~ 139 bytes
```
s=zip(*input().split('\n'))
i=0
while s[i:]:d=3**(max((s+[' '])[i+1])>' ')+i;print'+/5(_41_7802*6__-9)3'[hash(tuple(s[i:d]))*3%67%21];i=1+d
```
[Try it online!](https://tio.run/##NYzbqsIwEEXf/Yq8SGYSYm3rXeqPtCEIFTpQYzCRc6H/XjNyTiDsxdrsCT9pePhqnmPzSwEU@fBKgKsYRkogOy8RF9SsF18DjTcRWzrZU9/USsH9@g0QdSuFtNiSLi1eMqOmc3iST1IXW3Cb0u0P60rtnDNHrGU7XOMA6RXGG/C13iKqernbL6vSnqkpdT/PshDOOcGPs@v@sfNTzvwnFgXHipuJC3ZGG/aZjckkcpHXH/5bFZ9JNvIN "Python 2 – Try It Online")
[Answer]
# [APL (Dyalog Unicode)](https://www.dyalog.com/), ~~69~~ 61 bytes
Anonymous tacit prefix function. Requires `⎕IO←0`.
```
{('+-*/()',⎕D)['∆JV⍺TgucKmre3Ha'⍳⎕AV[94|2⊥¨,⌿⍵⊆⍨∨⌿32≠⍵]]}⎕UCS
```
[Try it online!](https://tio.run/##SyzI0U2pTMzJT///qG@qp/@jtgkG/6s11LV1tfQ1NNV1gIIumtHqjzravMIe9e4KSS9N9s4tSjX2SFR/1LsZKOsYFm1pUmP0qGvpoRU6j3r2P@rd@qir7VHvikcdK4BcY6NHnQuAYrGxtUDFoc7B/9OAVjzq7XvU1fyod82j3i2H1hs/apsIlAwOcgaSIR6eQDUKQBZQnYmCkTFQibq@Qnx8vAIIgOgYGKsGSAJxDYirD6L0QOI1NWARXW1dkCiQrasLZCnUxEAYUA36YNVAEXUuhG2GliDbYHaB1MBsiq@BiACpGJBdIBU1cAMVKkCSNRCLwKYC1YDtUwcA "APL (Dyalog Unicode) – Try It Online")
`⎕UCS` convert characters to code points
`{`…`}` "dfn"; argument is `⍵`
 `('+-*/()',⎕D)` the involved symbols followed by the **D**igits
 `[`…`]` index into that using the following indices:
  `'∆JV⍺TgucKmre3Ha'⍳` indices in this string (missing elements get index=length) of
  `⎕AV[`…`]` index into the **A**tomic **V**ector (the character set) using the following:
   `94|` the division remainder when divided by 94 of
   `2⊥¨` the base-2 evaluation of each of
   `,⌿` the vertically joined and flattened
   `⍵⊆⍨` segments of the argument, as indicated by trues in
   `∨⌿` the vertical OR-reduction of
   `32≠⍵` the Boolean mask indicating where the argument is different from 32 (space)
[Answer]
# [Charcoal](https://github.com/somebody1234/Charcoal), 67 bytes
```
⭆⪪⭆θ§αＩ⭆⟦θηζε⟧÷⊖℅§λκ³²A℅⁺⁴⁰÷⌕”$⌈O⁴εΦa↙M∕³↧ＦωＧ↙σ⎇C(｜？⊞¦﹪ω←2Ｉ0C⁻sⅉ”ι³
```
[Try it online!](https://tio.run/##XU7fT4MwEH7fX3HhqcQiRn3zqQxRQsTlpombM6SBxjUiTlaXxfR/x7amE9frd7/vvqvXvK8/eDsMs152isyVMa93fEPmm1aO408KTOVdI/aEU5jy7bj4bKprCt8UxAuFvFOp3MlGkFTUvXgXnRINue8b2fGW@C0thbcwDClcnIfOBiwwemou4rUSPZm1X1tyeTbel8muIcENY8jYw/WiSArGWFE4fVvgEp@yJMVyibiYZyWmiGmSPyJiiRhQkJbNkl0NA8QAVVU5aCPeP8bxi2E1ibVxKu2gHcDBVrXPGbHfvpUlO7Whnvyl9QGuN/71fBydRBBFEcAenLWz1nrYPu/bqX81fbjV8Rr@Idq1Pw "Charcoal – Try It Online") Link is to verbose version of code. Assumes 4 input strings of equal length (space padded if necessary). Explanation:
```
   θ                                First input
  ⭆                                 Map over characters and join
        ⟦θηζε⟧                      All four inputs as a list
       ⭆                            Map over strings
                  λ                 Inner string
                 §                  Indexed by
                   κ                Outer index
                ℅                   Take the ASCII code
               ⊖                    Decrement
              ÷     ³²              Integer divide by literal `32`
      Ｉ                             Cast to integer
    §α                              Index into uppercase alphabet
 ⪪                    A             Split on literal `A`
⭆                                   Map over substrings
                            ⌕...ι   Find their indices in compressed data
                           ÷     ³  Integer divide by 3
                        ⁺⁴⁰         Plus literal `40`
                       ℅            Convert to ASCII
                                    Implicitly print
```
The compressed data represents the literal string `GAARAATEYKBKAAAKKKAAAKHKRZRXFBDRNZRRYSFNRDRRDBIURRRNRR` which contains the pattens that result from the calculation, padded with `A`s to place them at the appropriate offset to generate the desired ASCII character.
[Answer]
# [JavaScript (Node.js)](https://nodejs.org), 152 bytes
```
f=(s,i=0,a=s.split`
`,c=a[n=0][i],x=1)=>c?"*3-425()6+9/7081"[c=='/'?6:c=='\\'?7:[x=3,4,5,6,9].map(c=>n+=Buffer(a[c/3|0])[i+c%3]*c)|n%47%16]+f(s,i-~x):''
```
[Try it online!](https://tio.run/##NY7dioMwEIXvfYpSkCQ1MXZt7baQCnuxL9DLKG2IScnixq6xxQXZV3eT/RkYzjfnzMC8iYdwsje3gdiuUfOsGXTYsAwL5lJ3a81wiS5YMsEty2puajyyNWJHWS5XOdk8bSEqkj3dZc/rJZeMAQrK4hCgqkC5O/CR5XiDt7jA@zp9Fzco2dEm7OWuteqh4JLmU1YjbhIZ5/VKosnGm128LupEh1fI14gOAMyys65rVdp2V6hhrz7uplcQaAdQ2ivRvJpWnT6thIA26kHd0Bjro6E7Db2xV4gQmunifD4vQgWt/imavPiewkyDpCGYvB8skpBgeybE02KKql/6O6E/@975Bg "JavaScript (Node.js) – Try It Online")
[Answer]
# [Jelly](https://github.com/DennisMitchell/jelly), 36 [bytes](https://github.com/DennisMitchell/jelly/wiki/Code-page)
```
ỴZ⁶=ẠƊ€œp$“¢Ọ/’,“642-*+)9(8/17035”ḥⱮ
```
A monadic Link accepting a list of characters which yields a list of characters.
**[Try it online!](https://tio.run/##y0rNyan8///h7i1Rjxq32T7cteBY16OmNUcnF6g8aphzaNHD3T36jxpm6gA5ZiZGulrampYaFvqG5gbGpo8a5j7csfTRxnX////XV4iPj1cAARAdA2Nx1QApIK4B8fVBlB5IogYoDhLS1dYFCQPZurpAlkINVwyEBdWiD1YPFAEA "Jelly – Try It Online")**
### How?
```
ỴZ⁶=ẠƊ€œp$“¢Ọ/’,“642-*+)9(8/17035”ḥⱮ - Link: list of characters, I
Ỵ                                    - split at newline characters
 Z                                   - transpose
         $                           - last two links as a monad - i.e. f(X):
     Ɗ€                              -   for each, last three links as a monad:
  ⁶                                  -     the space character
   =                                 -     equals? (vectorises)
    Ạ                                -     all?
       œp                            -   split (X) at truthy indices of (that)
                                     -     (...call the result A) 
          “¢Ọ/’                      - base 250 int = 170548 (salt)
                “642-*+)9(8/17035”   - list of characters "642-*+)9(8/17035" (domain)
               ,                     - pair -> [salt, domain]
                                   Ɱ - map across A with:
                                  ḥ  -   Jelly's hash function with salt and domain
```
[Answer]
# [05AB1E](https://github.com/Adriandmen/05AB1E/wiki/Commands), ~~54~~ ~~40~~ 39 [bytes](https://github.com/Adriandmen/05AB1E/wiki/Codepage)
```
"2(-1 0/ 9 6*)+"Ž´Š«|€SøJð4×¡JÇ2δβŽ4w%è
```
~~Can definitely be golfed some more with smarter magical integers (including changing the `ā‡` to for example `Åβ` or changing the order of the charcters in the strings), but I'm pretty bad at those kind of challenges personally, so this will do for now.~~  
-14 bytes thanks to *@ovs*, because he is skilled in these kind of magic integer challenges. ^\_^
[Try it online](https://tio.run/##yy9OTMpM/f9fyUhD11DBQF/BUsFMS1Nb6ejeQ1uOLji0uuZR05rgwzu8Dm8wOTz90EKvw@1G57ac23R0r0m56uEV//8r6CsoxMfHg3ENEMLY6Bgd6CvEcOnXABnxNWBcA8YKYAySrYGJASEIgUAMyDI9ELeGCyFcA8dgtfoQFpgE6tfV1lXQ1dVVUKhQANMgvSAahkHqYGyQLhS5GrhbwfYC7QcA) or [verify all test cases](https://tio.run/##XVCxSgNBEO33K4YFIZrbrAmHYJrUSZPC9mBRsLBRwcQkMJVNPsHWdIFYiBwiSJpdrs1H5EfOmdnsiVl4N2/fzL6ZuYen65u72xrzUD7r4f3jdNIHnS38T6bH00m8Dmrda5kunFu4hIuz07autr6s3vxmsX95vwrfo/CRh1e/GoVlb1fuPqttPjsJ6zrzX4PagnMO@HAsElNIgYB8txw6nEDSWTJtwzJxY4gBqiKywxMr9aSo5M5S4@0wShQKdnegGi9OzUE8o7f4UJV0UOzDngyeJfFjHB96r7ifbEVAAQhkw6SlFSDOxnuQpv5kbCC1NjL50nv@MzL3PM6Nhz0S0p4xB/Avh82s0pf6/wI).
**Explanation:**
```
"2(-1 0/ 9 6*)+"      # Push this string
                Ž´Š   # Push compressed integer 45783
                   «  # Append it to the string: "2(-1 0/ 9 6*)+45783"
|                     # Push all input-lines as list
 €S                   # Convert each line to a list of characters
   ø                  # Zip/transpose; swapping rows/columns
    J                 # Join each inner list (column) together to a string
     ð4×              # Push a string of 4 space characters: "    "
        ¡             # Split the list on that
         J            # Join each inner list of strings to a single string
          Ç           # Convert each string to a list of codepoint integers
            δ         # For each list of integers:
           2 β        #  Convert from a base-2 list to a base-10 integer
              Ž4w%    # Modulo-1078 on each value
è                     # And then (modulair 0-based) index them into the string
                      # (after which the result is output implicitly)
```
[See this 05AB1E tips of mine (section *How to compress large integers?*)](https://codegolf.stackexchange.com/a/166851/52210) to understand why `Ž´Š` is `45783` and `Ž4w` is `1078`.
]