Boxed character regions
JavaScript (ES6), 94 bytes

f=x=&gt;[...x].reduce((p,z)=&gt;p+!!z.trim()+2*/[Bg08$%&amp;]/.test(z)+/[ADOPQRabdeopq469@#]/.test(z),1)


Demo

As the code is in ES6, the demo only works in ES6-compatible browsers. At time of writing, this includes Firefox, Edge, and Chrome/Opera with experimental JavaScript features enabled.



f = x =&gt; [...x].reduce((p, z) =&gt; p + !!z.trim() + 2 * /[Bg08$%&amp;]/.test(z) + /[ADOPQRabdeopq469@#]/.test(z), 1)

// Snippet stuff
var v = function() {document.getElementById('Z').textContent = f(this.value)};
document.getElementById('I').addEventListener('keyup', v, false);
document.getElementById('I').addEventListener('change', v, false);
textarea {width: 100%}
&lt;p&gt;&lt;label&gt;Input: &lt;textarea id=I&gt;&lt;/textarea&gt;&lt;/label&gt;&lt;/p&gt;

&lt;p&gt;Output: &lt;output id=Z&gt;1&lt;/output&gt;&lt;/p&gt;