It sucks to write it by hand, but I feel like that’s a limitation we have to live with in PHP since it’s not a proper statically typed language (take a look at swashbuckle for .NET if you want something automatic). I prefer writing openapi specs directly rather than using the php annotation library you mentioned - less indirection.
A useful tool is the league/openapi-psr7-validator middleware that validates requests and responses automatically, to ensure they conform with an openapi spec file.