No, it cannot be detected without actually trying to connect.
The descriptor can easily be retrieved but it does not contain port information. You can see the details of the descriptor content in the specification for the rendezvous protocol.
There is even a mechanism to frustrate attempts to bruteforce, which is enabled by default.
HiddenServiceAllowUnknownPorts 0|1
If set to 1, then connections to unrecognized ports do not cause the current hidden service to close rendezvous circuits. (Setting this
to 0 is not an authorization mechanism; it is instead meant to be a mild inconvenience to port-scanners.) (Default: 0)
If someone tries to connect to a port that isn't "open", the whole rendezvous circuit is dropped and they have to rebuild one for each unsuccessful guess.