Compressing RLE data to draw ASCII art
JavaScript (ES6), 168 167 bytes

Returns an array of two strings: [dictionary, compressed_string].

s=&gt;[(a=(s=s.replace(/\d+/g,n=&gt;C(n|64),C=String.fromCharCode)).match(/../g)).map(v=&gt;s.split(v)[a[v]||3]&gt;=''?D+=v+(a[v]=C(i++)):0,i=97,D='')&amp;&amp;D,a.map(v=&gt;a[v]||v).join``]


Test cases



let f =

s=&gt;[(a=(s=s.replace(/\d+/g,n=&gt;C(n|64),C=String.fromCharCode)).match(/../g)).map(v=&gt;s.split(v)[a[v]||3]&gt;=''?D+=v+(a[v]=C(i++)):0,i=97,D='')&amp;&amp;D,a.map(v=&gt;a[v]||v).join``]

console.log(f('19,20 3(4)11@1$20 11@19,15"4:20 4)19,4:20 11@'))
console.log(f('15,15/10$15,15/10"10$10"10$10"10$10"15,15/'))