A while ago, when commenting on blogs was still a thing, I came up with an ingenious way to solve the spam problem and it worked with 99.9% accuracy. When someone posted a blog comment, I marked it as "pending" and I emailed it to myblogcomments@gmail.com email address. Then a minute later, I connected with POP3 to Gmail and checked the inbox. All spam comments were filtered by Gmail and the good comments ended up in inbox. I then removed the "pending" label and made them visible on my blog.
I was able to catch all spam comments by adding textfields for "title" and "body" hidden by CSS which would always be filled in anyway by bots but not humans.
same here, only with "email" field. For CSS-less humans, it even had a label: "please leave this field blank" :D
You filter both bots AND people who can't follow directions!
You never can be too sure haha!
That was a solution that worked almost all the time. I remember doing the same with inputs for email too